1. ホーム
  2. パイソン

[解決済み】クラスメソッドの目的は何ですか?

2022-04-02 23:41:58

質問

私はPythonを独学で勉強していますが、最近のレッスンは PythonはJavaではありません というわけで、Classのメソッドをすべて関数に変換するのに時間を費やしました。

でやっていたことを、クラスメソッドでやる必要がないことに気づきました。 static しかし、どのような場合に使用するのかがわかりません。 Pythonのクラスメソッドについて私が見つけることができるすべてのアドバイスは、私のような初心者はそれらを避けるべきであるという線に沿っており、標準的なドキュメントは、それらを議論するとき、その最も不透明である。

誰かPythonでClassメソッドを使用する良い例を持っていますか、少なくともClassメソッドが賢明に使用できるのはどんなときか教えてください。

どのように解決するのですか?

クラスメソッドは、特定のインスタンスに特化したメソッドではなく、何らかの形でクラスに関与するメソッドが必要な場合に使用されます。クラスメソッドの最も興味深い点は、Javaの静的メソッドやPythonのモジュールレベルの関数では不可能な、サブクラスによるオーバーライドが可能な点です。

クラスがある場合 MyClass と、MyClass を操作するモジュールレベルの関数 (ファクトリー、依存性注入スタブなど) を作成し、それを classmethod . そうすれば、サブクラスで利用できるようになります。