静的な定義
メンバ変数/静的メンバ変数
- メソッド外で定義すると全クラス共通のメンバ変数として使用出来る
クラス名.メンバ変数名でアクセス可能(インスタンス化しなくても参照することが出来る)
python ソースコード
class StaticMyClass():
data = "test"
myclass = StaticMyClass()
myclass2 = StaticMyClass
print(myclass.data)
print(myclass2.data)
print(StaticMyClass.data) ←インスタンス化しなくても参照可能
クラスメソッド
- メソッド名の上に
@classmethodの属性を記載する - 引数には
selfの代わりにclsを記述する - クラス変数を参照したい場合、メンバ変数の頭に
cls.を付与する クラス名.メソッド名でアクセス可能(インスタンス化しなくても参照することが出来る)
python ソースコード
class StaticMyClass(object):
num = 1
@classmethod
def func(cls):
print("sample",cls.num)
myclass = StaticMyClass()
myclass2 = StaticMyClass
myclass.func()
myclass2.func()
StaticMyClass.func() ←インスタンス化しなくても参照可能
スタティックメソッド
- メソッド名の上に
@staticmethodの属性を記載する - 引数には
selfやclsは不要 - メンバ変数にアクセスすることができない!