【发布时间】:2023-03-17 18:17:01
【问题描述】:
我正在调试一些代码,我想知道何时访问特定的字典。嗯,它实际上是一个继承dict 的类,并实现了一些额外的特性。无论如何,我想做的是我自己的子类dict 并添加覆盖__getitem__ 和__setitem__ 以产生一些调试输出。现在,我有
class DictWatch(dict):
def __init__(self, *args):
dict.__init__(self, args)
def __getitem__(self, key):
val = dict.__getitem__(self, key)
log.info("GET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
return val
def __setitem__(self, key, val):
log.info("SET %s['%s'] = %s" % str(dict.get(self, 'name_label')), str(key), str(val)))
dict.__setitem__(self, key, val)
'name_label' 是一个键,最终将被设置,我想用它来识别输出。然后我将我正在检测的类更改为子类DictWatch 而不是dict,并将调用更改为超级构造函数。不过,似乎什么都没有发生。我以为我很聪明,但我想知道我是否应该换个方向。
感谢您的帮助!
【问题讨论】:
-
您是否尝试使用打印而不是日志?另外,您能解释一下如何创建/配置您的日志吗?
-
dict.__init__不接受*args? -
看起来有点像装饰师的好人选。
标签: python dictionary