我有一個dict的自定義實現,它覆蓋並且由本地Python字典支持。但是,在設置時,它會對該值執行一些預處理,並將其存儲在某個專有對象中。獲取時,這個專有對象然後轉換爲更自然的格式。Python字典更新自定義字典
從此自定義字典中調用時的所有功能的行爲都符合我的喜好。
問題是,當您調用類似{'a':1} .update(custom_dict({'b':2}))'時,更新後的字典中'b'的值是專有內部存儲對象,而不是處理的值。
Python的本地字典更新如何工作。我已經覆蓋了我所能想到的所有方法,items
,iteritems
,values
,itervalues
,get
和__getitem__
,但我似乎沒有找到更新嘗試訪問的任何更新,這讓我相信它可能會使用c代碼。思考?
--Update--
我剛剛發現這個在Python源代碼:
if (PyDict_Check(b)) {
...
}
else {
/* Do it the generic, slower way */
...
}
也許這是一個錯誤,這應該是PyDict_CheckExact(b)
如在各種其他地方顯示出來碼。
任何想法如何擊敗此檢查?
你是否繼承`dict`?也許不這樣做會有所幫助。看起來你不會重複使用`dict`的大部分功能。 – 9000 2011-01-20 20:46:22