python常见函数修饰符总结

来源:互联网 发布:淘宝店铺装修全屏宽图 编辑:程序博客网 时间:2024/05/18 04:51

转自  http://blog.csdn.net/openxmpp/article/details/8779691

 

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) #打印类型为classobjif __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._Numif __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()

 

原创粉丝点击