class A(object):
#類屬性
name
score
def __init__(self, name, score):
#實例屬性
self.name = name
self.score = score
def foo(self,x):
#類實例方法
print "executing foo(%s,%s)"%(self,x)
@classmethod
def class_foo(cls,x):
#類方法
print "executing class_foo(%s,%s)"%(cls,x)
@staticmethod
def static_foo(x):
#靜態(tài)方法
print "executing static_foo(%s)"%x
調(diào)用方法:
a = A()
a.foo(1) //print : executing foo(<main.A object at 0xb77d67ec>,1)
a.class_foo(1) //executing class_foo(<class 'main.A'>,1)
A.class_foo(1) //executing class_foo(<class 'main.A'>,1)
a.static_foo(1) //executing static_foo(1)
A.static_foo(1) //executing static_foo(1)
區(qū)別:
類方法和靜態(tài)方法都可以被類和類實例調(diào)用阎姥,類實例方法僅可以被類實例調(diào)用
類方法的隱含調(diào)用參數(shù)是類,而類實例方法的隱含調(diào)用參數(shù)是類的實例鸽捻,靜態(tài)方法沒有隱含調(diào)用參數(shù)