방금 다음과 같은 "최소한"재현 사례를 정리했습니다 ( 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])
)을 지정해도 오류가 해결 되지 않습니다 dtype
(np.array([1], dtype=np.uint8)
)를 지정해도 오류가 해결 되지 않습니다- 테스트 한 조각 (
test[:].shape
)을 수행하면 오류가 사라집니다.
첫 번째 본능에 따르면 다양한 NumPY
방법 ( arange
vs zeros
vs full
등) 의 일관되지 않은 동작으로 인해 버그가 있음을 알 수 NumPY
있습니다. 그러나 NumPY
내가 오해한다는 기본 개념이있을 수 있습니다 . 우연히 작동하는 정의되지 않은 동작으로 코드를 작성하지 않도록하고 싶습니다.
pylint
전에 비난 했다numpy