主題: 了解property的概念
簡介:
假設今天我們有一個需求,我們有一個A class:
a = A()
當寫 a.m 我們希望呼叫到 A.f
當寫 a.m = 3我們希望呼叫到 A.g
當寫 del a.m我們希望呼叫到A.p
那我們該如何實作 ?
答案在這邊 (直接參考property這個class的實作方式)
個人理解:
先說一下規則好了,如果一個有實作 "descriptor protocol"的class,假設叫D好了:
當寫
d = D()
d
d = 5
del d
則會觸發
__get__
__set__
__del__
據此,我們可以讓 __get__ 去呼叫A.f
__set__去呼叫A.g
__del__去呼叫A.p
就可以達到題目需求....
但這樣很不彈性,
因此我們再多寫三個function以便有機會可以替換掉
A.f
A.g
A.p
其實以上就是property的概念:
"
Property是一個class擁有fget, fset, fdel這三個function,
我們可以用 getter, setter, deleter去註冊這三個function,
且getter, setter, deleter回傳都是Proptery object。
"
"
Property是一個class擁有fget, fset, fdel這三個function,
我們可以用 getter, setter, deleter去註冊這三個function,
且getter, setter, deleter回傳都是Proptery object。
"
沒有留言:
張貼留言