मैंने केवल निम्नलिखित "न्यूनतम" रिप्रो केस (उद्धरणों में न्यूनतम क्योंकि मैंने यह सुनिश्चित करना चाहा था कि pylintकोई और त्रुटि, चेतावनी, संकेत या सुझाव सुनिश्चित नहीं करना चाहता था - जिसका अर्थ है बॉयलरप्लेट का एक सा है):
pylint_error.py :
"""
Docstring
"""
import numpy as np
def main():
"""
Main entrypoint
"""
test = np.array([1])
print(test.shape[0])
if __name__ == "__main__":
main()
जब मैं pylintइस कोड पर चलता हूं (तो pylint pylint_error.py) मुझे निम्न आउटपुट मिलते हैं:
$> pylint pylint_error.py
************* Module pylint_error
pylint_error.py:13:10: E1136: Value 'test.shape' is unsubscriptable (unsubscriptable-object)
------------------------------------------------------------------
Your code has been rated at 1.67/10 (previous run: 1.67/10, +0.00)
यह दावा करता test.shapeहै कि यह ग्राह्य नहीं है, भले ही यह स्पष्ट रूप से हो। जब मैं कोड चलाता हूं तो यह ठीक काम करता है:
$> python pylint_error.py
1
तो क्या गड़बड़ pylintहो रही है, और मैं इसे कैसे ठीक कर सकता हूं?
कुछ अतिरिक्त नोट:
- यदि मैं परीक्षण की घोषणा करता हूं
np.arange(1), तो त्रुटि दूर हो जाती है - मैं के रूप में परीक्षण की घोषणा तो
np.zeros(1),np.zeros((1)),np.ones(1), याnp.ones((1))त्रुटि है नहीं चले जाओ - यदि मैं परीक्षण की घोषणा करता हूं
np.full((1), 1), तो त्रुटि दूर हो जाती है - प्रकार निर्दिष्ट करना (
test: np.ndarray = np.array([1])) त्रुटि को ठीक नहीं करता है - A
dtype(np.array([1], dtype=np.uint8)) निर्दिष्ट करना त्रुटि को ठीक नहीं करता है - परीक्षण का टुकड़ा (
test[:].shape) लेने से त्रुटि दूर हो जाती है
मेरी पहली वृत्ति कहती है कि विभिन्न NumPYतरीकों ( arangeबनाम zerosबनाम full, आदि) के साथ असंगत व्यवहार से यह पता चलता है कि यह सिर्फ एक बग है NumPY। हालांकि यह संभव है NumPYकि मुझे कुछ गलत अवधारणा हो । मुझे यकीन है कि मैं अपरिभाषित व्यवहार के साथ कोड नहीं लिख रहा हूं जो केवल दुर्घटना पर काम कर रहा है।
pylintपहले से ही दोषी हूँnumpy