通常のインスタンスメソッドでは、第1引数にインスタンスオブジェクト(self)が渡されるが、クラスメソッドの場合、クラスオブジェクト(cls)が渡される。
そのため cls を介してアクセスできるのは、クラス変数となる。
# -*- coding: utf-8 -*-
class myClass():
i = 10
def __init__(self):
self.i = 20
def add(self, x):
# インスタンス変数に対して、x を加算する。
return self.i + x
@classmethod
def c_add(cls, x):
# クラス変数に対して、x を加算する。
return cls.i + x
@staticmethod
def s_add(x):
# クラス変数に対して、x を加算する。
return myClass.i + x
x = myClass()
print x.add(5) # 25 が表示される
print x.c_add(5) # 15 が表示される
print x.s_add(5) # 15 が表示される
print myClass.s_add(5) # 15 が表示される
0 件のコメント:
コメントを投稿