私は以下の「最小」REPROケースをまとめて(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))
として宣言した場合、エラーはnot去る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
に根本的な概念がある可能性があります。事故に勤めているだけではない行動でコードを書いていないことを確認したいと思います。
2020年5月のアストロイド2.4.0のリリースでこれを最終的に固定した。