Python 模拟静态方法:
#staticmethod.py
class Spam:
numInstances=0
#----------------------------------------------------------------------
def __init__(self):
""""""
Spam.numInstances=Spam.numInstances+1
#----------------------------------------------------------------------
def printNumInstances(self):
""""""
print 'number of instances created: ',Spam.numInstances
a,b,c=Spam(),Spam(),Spam()
a.printNumInstances()
b.printNumInstances()
c.printNumInstances()
Spam().printNumInstances()
执行结果:
number of instances created: 3
number of instances created: 3
number of instances created: 3
number of instances created: 4
使用Python的函数转换成静态方法:staticmethod()--静态方法 classmethod()类方法
例子:
class Multi:
def imeth(self,x):
print self,x
def smeth(x):
print x
def cmeth(cls,x):
print cls,x
smeth=staticmethod(smeth)
cmeth=classmethod(cmeth)
obj=Multi()
obj.imeth(1)
Multi.imeth(obj,2)
执行结果:
<__main__.Multi instance at 0x01ED26C0> 1
<__main__.Multi instance at 0x01ED26C0> 2