2011-01-20 153 views
2

我有一个dict的自定义实现,它覆盖并且由本地Python字典支持。但是,在设置时,它会对该值执行一些预处理,并将其存储在某个专有对象中。获取时,这个专有对象然后转换为更自然的格式。Python字典更新自定义字典

从此自定义字典中调用时的所有功能的行为都符合我的喜好。

问题是,当您调用类似{'a':1} .update(custom_dict({'b':2}))'时,更新后的字典中'b'的值是专有内部存储对象,而不是处理的值。

Python的本地字典更新如何工作。我已经覆盖了我所能想到的所有方法,itemsiteritemsvaluesitervalues,get__getitem__,但我似乎没有找到更新尝试访问的任何更新,这让我相信它可能会使用c代码。思考?

--Update--

我刚刚发现这个在Python源代码:

if (PyDict_Check(b)) { 
    ... 
} 
else { 
    /* Do it the generic, slower way */ 
    ... 
} 

也许这是一个错误,这应该是PyDict_CheckExact(b)如在各种其他地方显示出来码。

任何想法如何击败此检查?

+0

你是否继承`dict`?也许不这样做会有所帮助。看起来你不会重复使用`dict`的大部分功能。 – 9000 2011-01-20 20:46:22

回答