@property、@staticmethod、@classmethod裝飾器
阿新 • • 發佈:2018-05-24
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裝飾器