python – 自定义词典通过** kw

python – 自定义词典通过** kw,第1张

概述我有一个使用** kw的库函数,但我想传递一个类似字典的类,以便我可以覆盖__getitem__来跟踪它对字典中数据的访问.例如,在下面的代码中调用libfn不会打印Accessed但libfn2会打印. class Dtracker(dict): def __init__(self): dict.__init__(self) def __getitem__(self,item): 我有一个使用** kw的库函数,但我想传递一个类似字典的类,以便我可以覆盖__getitem__来跟踪它对字典中数据的访问.例如,在下面的代码中调用libfn不会打印Accessed但libfn2会打印.

class Dtracker(dict):  def __init__(self):    dict.__init__(self)  def __getitem__(self,item):    print "Accessed %s" % str(item)    return dict.__getitem__(self,item)def libfn(**kw):  a = kw["foo"]  print "a is %s" % a  return adef libfn2(kw):  a = kw["foo"]  print "a is %s" % a  return ad = Dtracker()d["foo"] = "bar"  libfn(**d)libfn2(d)
解决方法 做这个

class Dtracker(dict):    def __init__(self,*arg,**kw):        super(Dtracker,self).__init__(*arg,**kw)    def __getitem__(self,item):        print "Accessed %s" % str(item)        return dict.__getitem__(self,item)def track( fn ):    def tracked_fn( **kw ):        kw= Dtracker( kw )        fn( kw )    return tracked_fn@trackdef libfn(kw):    a = kw["foo"]    print "a is %s" % a    return a

这或多或少的作品

>>> libfn( **{'foo':'bar'} )Accessed fooa is bar
总结

以上是内存溢出为你收集整理的python – 自定义词典通过** kw全部内容,希望文章能够帮你解决python – 自定义词典通过** kw所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存