78

Python2.6プログラムに「_log」という名前のモジュールレベルの変数があります。これについてPyLintは次のように文句を言います。

C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

この回答を読んだことで、なぜこれを行っているのかがわかります。変数が定数であると見なし、定数の正規表現を適用します。しかし、私は違うように頼みます:それは変数だと思います。PyLintにそれを伝えるにはどうすればよいので、文句を言わないのですか?PyLintは、それが変数であるか定数であるかをどのように判断しますか?すべてのモジュールレベルの変数を定数として扱うだけですか?

4

6 に答える 6

102
# pylint: disable-msg=C0103

これらの警告を無視するスコープに入れてください。上記の行末コメントを作成して、そのコード行のメッセージのみを無効にすることもできます。

IIRCは、pylintがすべてのモジュールレベルの変数を「定数」として解釈することは事実です。

新しいバージョンのpylintは、代わりにこの行を使用します

# pylint: disable=C0103
于 2009-12-11T01:17:24.090 に答える
19

少しのリファクタリングが役立つようです。Pylint はこれをモジュールとして見ているため、このレベルで変数が表示されることを期待しないのが合理的です。逆に、クラスや関数の var について文句を言うことはありません。次のパラダイムは非常に一般的なようで、問題を解決します。

def main():
    '''Entry point if called as an executable'''
    _log = MyLog()  # . . .

if __name__ == '__main__':
    main()

これには、便利なクラスがいくつかある場合、メインを実行せずにそれらをインポートできるという利点があります。__name__はモジュールのものであるため、「if」は失敗します。

于 2014-05-26T19:40:27.120 に答える
3

他の回答が示しているように、次の行を含めることで、特定の PyLint 警告 (C0103 など) を無効にすることができます。

# pylint: disable=C0103

Locally disabling invalid-nameしかし、これは警告を生成します。この二次的な警告は、無効化された警告を思い出させたい場合に役立つことに注意してください。構成ファイルを変更せずに警告をサイレントに無効にしたい場合 (警告をグローバルに無効にする)、次を使用できます。

# pylint: disable=I0011,C0103

PyLint は、I0011 を無効にしているという警告を発行しないことに注意してください!

于 2015-04-30T15:00:28.563 に答える