मैंने केवल निम्नलिखित "न्यूनतम" रिप्रो केस (उद्धरणों में न्यूनतम क्योंकि मैंने यह सुनिश्चित करना चाहा था कि 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