我有一个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