これは約@staticmethod
ではありません@classmethod
!仕組みはわかっていますstaticmethod
。私が知りたいのは、@staticmethod
vs。モジュールレベルの関数の適切なユースケースです。
私はこの質問をグーグルで調べましたが、モジュールレベルの関数は静的メソッドよりもPythonに近いため、モジュールレベルの関数が優先されるという一般的な合意があるようです。静的メソッドには、そのクラスにバインドされるという利点があり、そのクラスのみが静的メソッドを使用する場合に意味があります。ただし、Pythonの機能は通常、クラスではなくモジュールによって編成されるため、通常はモジュール関数にすることも理にかなっています。
静的メソッドはサブクラスでオーバーライドすることもできます。これは、見方によっては利点または欠点です。静的メソッドは通常「機能的に純粋」であるため、オーバーライドするのは賢くないかもしれませんが、便利な場合もあります(ただし、これは「便利でありながら絶対にしないでください」という種類の経験でしか教えられないことがあります)。
staticmethodまたはmodule-level関数を使用するための一般的な経験則はありますか?具体的な長所と短所は何ですか(将来の拡張、外部拡張、読みやすさなど)。可能であれば、事例も提供します。