class Fun(): @property def size(self): return 100 fun = Fun() print(fun.size)
100
python
class Fun(): def __init__(self): self.num = 0 @property def price(self): print("get @property") return self.num @price.setter def price(self, value): self.num = value print("set @price.setter") @price.deleter def price(self): print("del @price.deleter") obj = Fun() print(obj.price) # 能夠獲取價格,調用property裝飾器 obj.price = 100 # 修改價格,調用price.setter裝飾器 del obj.price # 刪除價格,調用price.deleter裝飾器
get @property 0 set @price.setter del @price.deleter`
能夠使用proerty來替代原有的封裝的set和get方法
code
#coding=utf-8 class Foo(object): def get_bar(self): print("getter...") return "laowang" def set_bar(self, value): """必須兩個參數""" print("setter...") return 'set value' + value def del_bar(self): print("deleter...") return "laowang" BAR = property(get_bar, set_bar, del_bar, "description...") obj = Foo() obj.BAR # 自動調用第一個參數中定義的方法:get_bar obj.BAR = "alex" # 自動調用第二個參數中定義的方法:set_bar方法,並將「alex」看成參數傳入 desc = Foo.BAR.__doc__ # 自動獲取第四個參數中設置的值:description... print(desc) del obj.BAR # 自動調用第三個參數中定義的方法:del_bar方法