Python2.2では静的メソッドとクラスメソッドが参照されており、古典的なクラスと新しいスタイルのクラスの両方を使用できます。同時に、クラス内の特定のメソッドをこれら 2 つのメソッドのいずれかに変換するために、1 組の組み込み関数 staticmethod と classmethod が導入されました。
静的メソッドは、インスタンスの参加なしで呼び出すことができるクラス内のメソッドを指します(自己パラメータは必要ありません)。呼び出しプロセス中に、インスタンスを作成する必要はありません。 Sign 演算子はメソッドを呼び出します。
通常、静的メソッドは @staticmethod デコレータを使用して宣言されます。
サンプル コード:
class ClassA(object): @staticmethod def func_a(): print('Hello Python') if __name__ == '__main__': ClassA.func_a() # 也可以使用实例调用,但是不会将实例作为参数传入静态方法 ca = ClassA() ca.func_a()
ここで、Python 2 では、クラス メソッドが self パラメーターを必要としない場合、静的メソッドとして宣言する必要があることに注意してください。 @staticmethod デコレーター。したがって、インスタンスなしで呼び出します。
Python 3 では、クラス メソッドに self パラメーターが必要ない場合、静的メソッドとして宣言する必要はなくなりました。ただし、この場合、メソッドはクラスを通じてのみ呼び出すことができます。インスタンスを使用してメソッドを呼び出すと異常が発生します。
class ClassA(object): def func_a(): print('Hello Python') if __name__ == '__main__': ClassA.func_a() # 以下使用实例调用会引发异常 ca = ClassA() ca.func_a()
例外情報:
func_a() は位置引数を 0 個とりますが、1 個が指定されました
func_a は静的メソッドとして宣言されていないため、クラス インスタンスは次の場合に非表示になります。 func_a の呼び出し self パラメータは func_a に渡されますが、func_a 自体はパラメータを受け入れないため、例外がスローされます。
以上が静的メソッドの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。