Last Update: 2013-4-9
欢迎转载
openxmpp@163.com
1) @classmethod
用classmethod修饰表示这是一个类方法,如果没有用@classmethod修饰,则表示这是一个对象方法,使用时必须与一个对象绑定,如下
class MyClass():
def thisIsClassMethod(self):
print "this is a class method"
if __name__ == "__main__":
c = MyClass()
MyClass.thisIsClassMethod(c) #调用时传入参数c,否则编译错误
如果采用@classmethod修饰,则不用传入参数c,可以用下面方式调用:
class MyClass(): @classmethod def thisIsClassMethod(cls,parameter): print "this is a class method" print cls.__name__ print type(cls) #打印类型为classobj if __name__ == "__main__": MyClass.thisIsClassMethod(None) #不用与对象绑定 print type(MyClass)
2) property修饰符
被property修饰符修饰的方法可以像属性一样被访问,如
class MyClass:
def __init__(self,num):
self._Num = num
@property
def Num(self):
return self._Num
if __name__ == "__main__":
c = MyClass(100)
print c.Num #注意,这里的访问形式看起来像是访问一个属性,但其实是一个方法
3) staticmethod修饰符
被staticmethod修饰符的表示这是一个类的静态方法,可以被类直接调用,与@classmethod的区别在于classmethod对应的方法的第一个参数为cls,为类的类型,而staticmethod不是
如下:
class MyClass:
@staticmethod
def thisIsStaticMethod():
print "This is static method"
if __name__ == "__main__":
MyClass.thisIsStaticMethod()