[解決済み] Pythonの静的メソッド?
2022-03-17 18:53:22
質問
Pythonで、クラスを初期化せずに呼び出せる静的メソッドを持つことは可能でしょうか?
ClassName.static_method()
解決方法は?
そうだ。 staticmethod デコレーター
class MyClass(object):
@staticmethod
def the_static_method(x):
print(x)
MyClass.the_static_method(2) # outputs 2
なお、静的メソッドを定義する際に、古い方法である
staticmethod
をデコレータではなく関数として使用します。これは、古いバージョンの Python (2.2 や 2.3) をサポートする必要がある場合にのみ使用すべきです。
class MyClass(object):
def the_static_method(x):
print(x)
the_static_method = staticmethod(the_static_method)
MyClass.the_static_method(2) # outputs 2
これは、最初の例とまったく同じです。
@staticmethod
を使用しないだけです。
最後に
staticmethod
を惜しまないでください。Pythonで静的メソッドが必要な場面はほとんどありませんし、別の "トップレベル" 関数があればより明確だったという場面で何度も使われているのを見てきました。
<ブロッククオート
静的メソッドは、暗黙の第一引数を受け取りません。静的メソッドを宣言するには、このイディオムを使用します。
class C:
@staticmethod
def f(arg1, arg2, ...): ...
静的メソッド形式は、関数 デコレーター - の関数定義の説明を参照してください。 関数定義 をご覧ください。
このメソッドは、クラス(たとえば
C.f()
) またはインスタンス (例えば
C().f()
). インスタンスは、そのクラス以外は無視されます。
Pythonの静的メソッドは、JavaやC++にあるものと似ています。より高度な概念については
classmethod()
.
静的メソッドの詳細については、標準的な型階層に関するドキュメントである 標準的な型階層 .
バージョン2.2での新機能です。
バージョン 2.4 で変更: 関数デコレータの構文を追加しました。
関連
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] 静的メソッドを使用する場合
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python LeNetネットワークの説明とpytorchでの実装
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】ValueError: xとyは同じサイズでなければならない