Re: [問題] 學習Descriptor, Design Patterns

作者: dinohsu1019 (數獨迅猛龍)   2024-05-23 20:42:01
※ 引述《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
作者: lycantrope (阿寬)   2024-05-23 21:55:00
能不用就不用,很慢
作者: timTan (用口頭禪區分年記)   2024-05-31 22:13:00
通常是 framework 作者會用到

Links booklink

Contact Us: admin [ a t ] ucptt.com