我目前正在閱讀Mark Pilgrim的Dive Into Python,並且已經介紹了有關繼承的部分。在section 5.5中,Pilgrim提到了繼承自包裝類UserDict與繼承自內建字典類型之間的差異。直接從Python中的內置類與其包裝類繼承
我很難理解爲什麼有人會打擾包裝類...繼承自UserDict包裝類(或任何其他UserXxx類)的好處是什麼?
您的建議非常感謝。謝謝!
我目前正在閱讀Mark Pilgrim的Dive Into Python,並且已經介紹了有關繼承的部分。在section 5.5中,Pilgrim提到了繼承自包裝類UserDict與繼承自內建字典類型之間的差異。直接從Python中的內置類與其包裝類繼承
我很難理解爲什麼有人會打擾包裝類...繼承自UserDict包裝類(或任何其他UserXxx類)的好處是什麼?
您的建議非常感謝。謝謝!
你說得對:
需要該類一直 通過能力直接 子從字典(功能 變得可用開始 Python版本2.2)很大程度上取代。在引入字典之前,使用UserDict 類創建 類似字典的子類,其中 通過重寫 現有方法或添加新類來創建新行爲。
注意第一句。這來自UserDict的documentation。
哦,在Python 3中它已經消失了。
包裝類已經從Python 3中刪除,因爲它們現在還沒有被使用。 mixin類,UserDict.DictMixin
,是一個完全不同的故事 - 它的有用特性現在遍佈在collections
模塊(Python 2.6和3. *)中的「抽象基類」中。
我發現,您鏈接到網頁上,一個提示答案:
在Python版本2.2之前, 你不能直接繼承 內置的數據類型,例如字符串, 列表和字典。爲了補償 ,Python帶有包裝 類,它們模仿了這些內置數據類型的行爲:UserString, UserList和UserDict。使用正常和特殊 方法的 組合,UserDict類可以很好地模仿字典。 在Python 2.2和更高版本中,您可以從 數據類型(如dict)直接繼承類。
實際上,今天你可能想要分類字典,而不是UserDict。