web-dev-qa-db-ja.com

パイリントメッセージの処理方法:警告:メソッドは関数である可能性があります

pythonクラスがあり、それに対してpylintを実行しました。

Warning: Method could be a function

これは、インスタンス変数を使用しないため、このメソッドをクラスから移動する方が良いと言っていますか?

C#では、これを静的メソッドにします。ここで最もPython的なことは何ですか?

55
bignum

クラスにまったく触れない場合は、関数に移動するのが一般的です。

クラス属性を操作する場合は、classmethodデコレーターを使用します。

@classmethod
def spam(cls, ...):
   # cls is the class, you can use it to get class attributes

classmethodおよびstaticmethod(前者と同じですが、メソッドが最初のパラメーターからクラスへの参照を取得しないことを除いて)はごく最近導入されました。これは、一部のPythonプログラマーが静的およびクラスメソッドを回避するために使用されることを意味します。

一部の筋金入りのPythonプログラマーは、これらのデコレーターが物事を複雑にするだけだと言うでしょう。他の一部の人(通常は以前のC#またはJavaプログラマー)は、関数を使用するだけではオブジェクト指向ではないことを教えてくれます。好みの問題だと思います。

58