1. 程式人生 > >@property、@staticmethod、@classmethod裝飾器

@property、@staticmethod、@classmethod裝飾器

init 傳遞 root 函數 ini ron 無需 self. rop

@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)

****靜態方法和類方法雖然是給類準備的,如果實例去用,不會報錯,只不過實例去調用的時候容易讓人混淆*****

@property、@staticmethod、@classmethod裝飾器