Pythonのクラスメソッドとインスタンスメソッドの違いを理解するためには、self
とcls
の違いを理解することが重要です。
selfとは
self
はインスタンスメソッドの第一引数で、そのクラスの現在のインスタンスを表します。self
を介して、そのインスタンスの変数やメソッドにアクセスできます。self
はメソッド実行時に自動的に渡される引数です。
clsとは
cls
はクラスメソッドの第一引数で、そのクラス自身を表します。cls
を介して、そのクラスのクラス変数やクラスメソッドにアクセスできます。cls
はクラスメソッド実行時に自動的に渡される引数です。
サンプルコード
以下に、self
とcls
の使い方を示すサンプルコードを示します。
class Taiyaki:
maker = "鈴木屋"
def __init__(self, content):
self.content = content
def say_azi(self):
print(f"中身は{self.content}です")
@classmethod
def say_maker(cls):
print(f"{cls.maker}のたい焼きです")
@staticmethod
def describe():
print("これはたい焼き用のクラスです")
このTaiyaki
クラスを使って、粒あんとカスタードクリームのたい焼きを作ってみます。
t_ann = Taiyaki("粒あん")
t_custard = Taiyaki("カスタードクリーム")
t_ann.say_azi() # 中身は粒あんです
t_custard.say_azi() # 中身はカスタードクリームです
t_ann.say_maker() # 鈴木屋のたい焼きです
t_custard.say_maker() # 鈴木屋のたい焼きです
Taiyaki.say_maker() # 鈴木屋のたい焼きです
Taiyaki.describe() # これはたい焼き用のクラスです
このサンプルコードから、self
とcls
の違いと使い方を理解できるでしょう。
まとめ
Pythonのクラスメソッドとインスタンスメソッドの違いを理解するためには、self
とcls
の違いを理解することが重要です。self
はインスタンスを、cls
はクラス自身を表します。それぞれの使い方を理解し、適切にコードを書くことが重要です。