看板 Python 關於我們 聯絡資訊
※ 引述《dinohsu1019 (傑生方的鐵粉)》之銘言: : 學習Python一年基本的會了,最近想加強物件導向編程(object-oriented programming) : 我學得有點辛苦:Descriptor的部分我已經看了5位直播老師,還是覺得沒有掌握:為什 : 麼要用另一個class來實作getter, setter呢? : 另外是「四人幫」的23個設計模式(design patterns),還有很長的路要走 : 至於 metaclass 就更難了,看來應該用不上,先就放著了。 : 不知大家學這些是否一次就能掌握?Python有這麼難嗎?感謝先 2024-05-23 更新 我現在對於 descriptor protocol 的理解好一點了: 1. 是為解決類別屬性存取的問題,例如 validation, caching, logging 等。 2. 如果使用單一類別:(1)使用 __setattr__, getattr__ 或是(2)使用 @property, @attrbute.setter 等,會有繼承上的麻煩,多屬性也有點麻類。 3. descriptor protocol 的解法是增加一種叫做 descriptor 的類別,使用 __set__, __get__, __del__ 等方法,這樣繼承和多屬性的寫法比較簡潔。 4. 由於 descriptor 最好使用WeakKeyDictionary 來簡化圾垃回收的問題 (garbage collection) 先前所以會覺得很難是因為缺乏一些前知識:garbage collection, weakref, 多 種神奇方法 (magic methods)、以及要解決的問題等,造成「內在認知負荷」( intrinsic cognaitive load)過大。 這是範例 notebook:https://tinyurl.com/28ocufyu -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.68.238.10 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1716468124.A.75C.html ※ 編輯: dinohsu1019 (219.68.238.10 臺灣), 05/23/2024 20:45:09 ※ 編輯: dinohsu1019 (219.68.238.10 臺灣), 05/23/2024 20:49:41
lycantrope: 能不用就不用,很慢 05/23 21:55
timTan: 通常是 framework 作者會用到 05/31 22:13