1. ホーム
  2. python

[解決済み] Pythonで静的なクラス変数は可能ですか?

2022-03-19 21:18:20

質問

Pythonで静的なクラス変数やメソッドを持つことは可能でしょうか?これを行うにはどのような構文が必要ですか?

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

クラス定義の内部で宣言され、メソッドの内部で宣言されない変数は、クラス変数または静的変数です。

>>> class MyClass:
...     i = 3
...
>>> MyClass.i
3 

として@に ミルキーデブ が指摘するように、これはクラスレベルの i という変数がありますが、これはインスタンスレベルの i という変数があるので

>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)

これは、C++やJavaとは異なりますが、インスタンスへの参照を使用して静的メンバにアクセスできないC#とはあまり変わりません。

参照 Pythonチュートリアルがクラスとクラスオブジェクトについて言っていること .

については、@Steve Johnson が既に回答しています。 静的メソッド の下でも文書化されています。 Python ライブラリリファレンスの "組み込み関数" を参照してください。 .

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

beidyのおすすめ クラスメソッド は staticmethod よりも優れています。なぜなら、このメソッドは最初の引数としてクラス型を受け取るからです。