@classmethod【クラスメソッド】
@staticmethod【静的メソッド】

@classmethod【クラスメソッド】
@staticmethod【静的メソッド】

メモ

構文

@classmethod
【メソッド定義】
@staticmethod
【メソッド定義】

class Parent():
    msg = "[Parent]"

    def __init__(self, name):
        self.name = name

    @classmethod
    def class_method(cls):
        print("class_method() " + cls.msg)

    @staticmethod
    def static_method():
        print("static_method() " + Parent.msg)

    def method(self):
        print("method() " + self.name)


class Child(Parent):
    msg = "[Child]"


obj1 = Parent("TARO")

Parent.class_method()   # 出力:class_method() [Parent]
Parent.static_method()  # 出力:static_method() [Parent]
#Parent.method()        # TypeError 例外

obj1.class_method()   # 出力:class_method() [Parent]
obj1.static_method()  # 出力:static_method() [Parent]
obj1.method()         # 出力:method() TARO

obj2 = Child("ICHIRO")

Child.class_method()   # 出力:class_method() [Child]
Child.static_method()  # 出力:static_method() [Parent]
#Child.method()        # TypeError 例外

obj2.class_method()   # 出力:class_method() [Child]
obj2.static_method()  # 出力:static_method() [Parent]
obj2.method()         # 出力:method() ICHIRO