3.23. スタティックメソッド

Pythonにおけるスタティックメソッドの概要です。スタティックメソッドはインスタンス化しなくても呼び出すことができますが、インスタンスからでも呼び出すことができます。なお「self」を用いたインスタンス属性(インスタンス変数)にはアクセスできません。

3.23.1. @staticmethod

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  class MyClass4:
        # スタティックメソッド
        @staticmethod
        def method1(x, y):
            return x + y

  # インスタンス化しないで呼び出し
  print (MyClass4.method1(11, 2200))

  # インスタンス化してからも呼び出せる
  object1 = MyClass4()
  print (object1.method1(33, 4400))

出力

2211
4433

このようにクラスである MyClass4からも、インスタンスであるobject1からも同じように呼び出すことができます。

インスタンスメソッドではインスタンス変数の参照に「self」を、クラスメソッドにはクラス変数の参照に「cls」を用いましたが、スタティックメソッドではそれらを参照すると矛盾が生じますので、いずれも使うことができません。