Ben sadece aşağıdaki "minimum" repro davayı bir araya getirdim (tırnak içinde minimum çünkü pylint
başka hata, uyarı, ipucu veya öneri atmak emin olmak istedim - yani biraz kazan levhası var):
pylint_error.py :
"""
Docstring
"""
import numpy as np
def main():
"""
Main entrypoint
"""
test = np.array([1])
print(test.shape[0])
if __name__ == "__main__":
main()
Ben çalıştırdığınızda pylint
bu kod (on pylint pylint_error.py
) aşağıdaki çıktıyı almak:
$> 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
Oldukça açık olmasına rağmen, aboneliğin olmadığını iddia ediyor . Kod çalıştırdığımda gayet iyi çalışıyor:
$> python pylint_error.py
1
Peki pylint
şaşkınlığa neden olan nedir ve nasıl düzeltebilirim?
Bazı ek notlar:
- Ben testi bildirirseniz
np.arange(1)
hata ortadan kalkar - Ben testi olarak bildirirseniz
np.zeros(1)
,np.zeros((1))
,np.ones(1)
veyanp.ones((1))
hata yok değil go away - Ben testi bildirirseniz
np.full((1), 1)
hata ortadan kalkar - (Türünü belirleme
test: np.ndarray = np.array([1])
etmez) değil hatayı düzeltmek - Bir belirtme
dtype
(np.array([1], dtype=np.uint8)
etmez) değil hatayı düzeltmek - Bir test (
test[:].shape
) dilimi almak hatayı ortadan kaldırır
İlk içgüdüm, çeşitli NumPY
yöntemlerle ( arange
vs zeros
vs full
vs) tutarsız davranışın sadece bir hata olduğunu öne sürdüğünü söylüyor NumPY
. Ancak NumPY
yanlış anladığımın altında yatan bazı kavramlar olabilir . Sadece kaza üzerinde çalışan tanımsız davranışlarla kod yazmadığımdan emin olmak istiyorum.
pylint
önce suçluyorumnumpy