python property的使用
阿新 • • 發佈:2019-01-31
經常在python程式裡看到,@property 這個東西,到底用來做什麼的。主要就是用來把方法變成屬性呼叫,也就是是更pythonic。
將一個方法變為只讀物件
當加了property這個裝飾器後,only_para變成了一個只讀的屬性gettattr,先在再給他加一個setattr屬性class Test(object): def __init__(self, para): self.para = para @property def only_para(self): return 'para:%s'% self.para cc = Test("hello, world!") print cc.only_para cc.only_para = 'try' # 這一步會報錯 Traceback (most recent call last): File "proper.py", line 21, in <module> cc.only_para = 'try' AttributeError: can't set attribute
class Test(object): def __init__(self, para): self.para = para @property def normal_para(self): return 'para:%s'% self.para @normal_para.setter def normal_para(self, value): if isinstance(value, str): self.para = "string" elif isinstance(value, int): self.para = 10 cc = Test("hello, world!") print cc.normal_para cc.normal_para = 100 print cc.normal_para # output para:hello, world! para:10
可以看到屬性設定成功,normal_para引數已經改變。
總結一下就是,property這個裝飾器就如同名字一樣,講過方法轉為屬性。在設計程式碼時靈活運用這個裝飾器可以讓程式碼更pythonic