Re: [問題] @property

作者: tsaiminghan (tsaiminghan)   2022-09-01 09:47:02
經過前面網友的提醒,我之前把class的格式看得太死,
該把它想成跟一般函式一樣,裡面的def也可以在 class中使用
=========================
class A(object):
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
==========================
跟下面是同等的。
==========================
class A(object):
def x(self):
return self._x
x = property(x)
@x.setter
def x(self, value):
self._x = value
==========================
作者: poototo (poototo)   2022-09-01 20:32:00
可以這樣方便記憶,但觀念上建議還是做點區分class內的物件都是在造class過程中會一併建立的成員物件但def內的變數,只在def執行時才建立所以你可以對class的成員做存取,inner func就只能走閉包class是建立一個名稱空間來管理成員的參照集合,就是api而且成員中的def,實際上的type是method調用時的行為跟一般def不一樣,後者的type是functioninner func的scope可以參考到parent func的scope但method的scope不行直接參考class下的scope可是method的參數預設值又可以直接使用class的成員
作者: tsaiminghan (tsaiminghan)   2022-09-02 00:55:00
謝謝. 你說的說明,對我而言蠻清楚的

Links booklink

Contact Us: admin [ a t ] ucptt.com