我想知道如何从dict修改现有的.update函数。
例如:
import __builtin__
def test(a):
print a
__builtin__.update = test
因此,当我再次使用X.update时,它会显示一个说明值的印刷品。
我的意思是:
test = {}
test.update({ "Key" : "Value" })
我想要一份显示以下文字的印刷品:“钥匙”和“价值”
亲切的问候, 丹尼斯
答案 0 :(得分:1)
class dict2(dict):
def update(*args,**kwargs):
print "Update:",args,kwargs
dict.update(*args,**kwargs)
d = dict2(a=5,b=6,c=7)
d.update({'x':10})
因为我确定你注意到你不能简单地做dict.update=some_other_fn
...但是,如果你既坚定又愚蠢,有办法做到这一点......
~> sudo pip install forbiddenfruit
~> python
...
>>> from forbiddenfruit import curse
>>> def new_update(*args,**kwargs):
print "doing something different..."
>>> curse(dict,"update",new_update)
答案 1 :(得分:0)
您可以通过继承dict
来覆盖更新方法。
from collections import Mapping
class MyDict(dict):
def update(self, other=None, **kwargs):
if isinstance(other, Mapping):
for k, v in other.items():
print(k, v)
super().update(other, **kwargs)
m = MyDict({1:2})
m.update({2:3})