クラスにくっついている関数のようなもので、インスタンス化していないクラスのものから呼び出せる。
メソッドに@classmethodと付けることでクラスメソッドにできる。
class A:
def test_method():
print("test")
@classmethod
def my_cls_method(cls):
print("hello")
A.my_cls_method()
A.test_method()
– 第一引数でクラスが取得できる(インスタンスメソッドは第一引数が必ずselfになる)
– クラスの中にあるので、クラスをインポートすれば使える
– クラスメソッドを使わずに関数として書くこともできるが、クラスメソッドの場合は、インポートできて、まとめて管理できる
class Item:
def __init__(self, id, name):
self.id = id
self.name = name
@classmethod
def retrieve_from_api(cls, id):
res = requests.get(f"https://api.example.com/items/{id}")
data = res.json()
return cls(id, data["name"])