6

次の場合、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 が返されます)。

コードを変更せずに回避策はありますか? エラーは他の場所にとって重要であるため、エラーを無効にしたくありません。

それをより適切に処理するために使用できる他のツールはありますか? 私はすでにpyflakesをチェックしましたが、同じように動作します。PyDev のコード分析は、この特定のケースをより適切に処理しているようですが、規則、リファクタリング、および pylint が行うその他の優れた機能をチェックしておらず、外部スクリプトから実行することはできません (または実行できますか??)

ありがとう!

4

4 に答える 4

4

エラーをグローバルに無効にしたくない場合は、これらの特定の行に対してエラーを無効にすることができます。次に例を示します。

def foo(self, foo_val): # pylint: disable-msg=E0102
于 2010-10-20T20:27:48.177 に答える
3

これはpylint プロジェクトのチケットhttp://www.logilab.org/ticket/51222です。その状態を監視します。

于 2010-11-23T07:27:59.630 に答える
1

は。迷惑。そして、私が見つけることができるすべての主要なツール (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-引用:

ゲッターとセッターは、Java と C++ の悲しい世界に属しています。

于 2010-10-20T18:19:46.063 に答える
0

これはpyflakes のバグとして報告されており、現在のトランクでは修正されているようです。だから私は答え(今)だと思います:pyflakes!

于 2012-03-31T22:42:27.490 に答える