Re: [問題] @property

看板Python作者 (nahgnimiast)時間1年前 (2022/09/01 09:47), 編輯推噓5(506)
留言11則, 2人參與, 1年前最新討論串4/4 (看更多)
經過前面網友的提醒,我之前把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 ========================== -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.53.129 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1661996825.A.203.html

09/01 20:32, 1年前 , 1F
可以這樣方便記憶,但觀念上建議還是做點區分
09/01 20:32, 1F

09/01 20:34, 1年前 , 2F
class內的物件都是在造class過程中會一併建立的成員物件
09/01 20:34, 2F

09/01 20:35, 1年前 , 3F
但def內的變數,只在def執行時才建立
09/01 20:35, 3F

09/01 20:39, 1年前 , 4F
所以你可以對class的成員做存取,inner func就只能走閉包
09/01 20:39, 4F

09/01 20:41, 1年前 , 5F
class是建立一個名稱空間來管理成員的參照集合,就是api
09/01 20:41, 5F

09/01 20:55, 1年前 , 6F
而且成員中的def,實際上的type是method
09/01 20:55, 6F

09/01 20:55, 1年前 , 7F
調用時的行為跟一般def不一樣,後者的type是function
09/01 20:55, 7F

09/01 21:10, 1年前 , 8F
inner func的scope可以參考到parent func的scope
09/01 21:10, 8F

09/01 21:11, 1年前 , 9F
但method的scope不行直接參考class下的scope
09/01 21:11, 9F

09/01 21:21, 1年前 , 10F
可是method的參數預設值又可以直接使用class的成員
09/01 21:21, 10F

09/02 00:55, 1年前 , 11F
謝謝. 你說的說明,對我而言蠻清楚的
09/02 00:55, 11F
文章代碼(AID): #1Z40yP83 (Python)
文章代碼(AID): #1Z40yP83 (Python)