Python其實有三個方法:
靜態方法(staticmehtod)
類方法(classmethod)
實例方法
下面依次來看:
def foo(x):
print 'hello foo(%s)' % (x)
class A(object):
def foo(self, x):
print 'hello foo(%s, %s)' % (self, x)
@classmethod
def class_foo(cls, x):
print 'hello class_foo(%s, %s)' % (cls, x)
@staticmethod
def static_foo(x):
print 'hello static_foo(%s)' %x
a= A()
一般的函數就可以這樣調用foo(x),與類和實例無關。
對於實例方法,我們都知道在類裏定義方法的時候都需要綁定這個實例,就是foo(self, x),這麼做的目的就是實例方法的調用離不開實例,我們在使用的時候需要把實例自己傳給參數,即a.foo(x), (其實是foo(a, x)),類方法也是如此,只不過它傳遞的是類而不是實例,即A.class_foo(x) .
對於靜態方法大致上和普通方法是一致的,不需要對誰進行綁定,唯一的區別是調用的時候需要使用
a.static_foo(x) 或者 A.static_foo(x)來調用