Re: [問題] 學習Descriptor, Design Patterns
※ 引述《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
→
05/23 21:55,
5月前
, 1F
05/23 21:55, 1F
→
05/31 22:13,
5月前
, 2F
05/31 22:13, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章