通常のインスタンスメソッドでは、第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 件のコメント:
コメントを投稿