@property@staticmethod@classmethod装饰器

Posted vglede

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@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

[[email protected] pyscript]# python st_property_py 
12
in the a

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

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

[[email protected] 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()
[[email protected] pyscript]# python st_property_py (<class __main__.A at 0x7f066642b530>, 1) (<class __main__.B at 0x7f066642b668>, 2)

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

以上是关于@property@staticmethod@classmethod装饰器的主要内容,如果未能解决你的问题,请参考以下文章