@property、@staticmethod、@classmethod装饰器

@property装饰器放置在类中的无需带参数传递的函数上一行,表示该函数为类的一个属性,调用方法为:类对象.函数名

eg:

#!/usr/bin/python

class test():
    def __init__(self,value):
        self.value=value
    @ property
    def a(self):
        print self.value
        print("in the a")
b=test("12")
b.a

[root@jht pyscript]# python st_property_py 
12
in the a

@staticmethod静态方法装饰器,放置在类中的无需带参数传递的函数上一行,表示该函数为类的一个静态方法。

@classmethod类方法装饰器,被装饰的函数是被类调用的。

[root@jht pyscript]# cat st_property_py 
#!/usr/bin/python
class t1:
    x=1
    @classmethod
    def test(va):
        print(va,va.x)
t1.test() class t2(t1): x=2 t2.test()
[root@jht pyscript]# python st_property_py (<class __main__.A at 0x7f066642b530>, 1) (<class __main__.B at 0x7f066642b668>, 2)

****静态方法和类方法虽然是给类准备的,如果实例去用,不会报错,只不过实例去调用的时候容易让人混淆*****

原文地址:https://www.cnblogs.com/st12345/p/9083802.html