Pylint Bug -e1101&e0102 @property + @foo.setterの使用時
質問
Pylintが次の場合をうまく処理していないことに気付きました。
@property
def foo(self):
return self._bar.foo
@foo.setter
def foo(self, foo_val):
self._bar.foo = foo_val
Python2.6以来、それは完全に有効なケース構文ですが
Fooを2回定義したと書かれており、「.setter」構文(E1101&E0102を与える)を理解していません。
コードを変更せずにその回避策はありますか?エラーは他の場所にとって重要であるため、エラーを無効にしたくありません。
それをよりよく処理することができる他のツールはありますか?私はすでにpyfleakesをチェックしていますが、同じように動作します。 Pydevのコード分析はこの特定のケースをより適切に処理しているようですが、コンベンション、リファクタリング、およびその他のクールな機能Pylintが行うことはありません。
ありがとう!
解決
これはチケットです http://www.logilab.org/ticket/51222 Pylintプロジェクトについて。そのステータスを監視します。
他のヒント
グローバルにエラーを無効にしたくない場合は、これらの特定の行、例えば、それらを無効にすることができます。
def foo(self, foo_val): # pylint: disable-msg=E0102
は。迷惑。そして、私が見つけることができるすべての主要なツール(Pyflakes、Pylint、Pychecker)は、この問題を示しています。問題はバイトコードで始まるようですが、取得できません dis
オブジェクトプロパティのバイトコードを教えてください。
この構文を使用した方が良いようです。
# Changed to longer member names to reduce pylint grousing
class HughClass(object):
def __init__(self, init_value):
self._hugh = init_value
def hugh_setter(self):
return self._hugh * 2
def hugh_getter(self, value):
self._hugh = value / 2
hugh = property(hugh_getter, hugh_setter)
これが次のとおりです 素敵なブログ記事 その上。 LOL-QUOTE:
ゲッターとセッターは、JavaとC ++の悲しい世界に属します。
これは。。。でした Pyfleakesのバグとして報告されています, 、そして、それは現在のトランクに固定されているようです。だから私は答えは(今)だと思います:pyflakes!