如何正确地子类化字典并覆盖 __getitem__ 和 __setitem__ 方法。
- 论坛
- 如何正确地子类化字典并覆盖 __getitem__ 和 __setitem__ 方法。
6 浏览
如何正确地子类化字典并覆盖 __getitem__ 和 __setitem__ 方法。
我正在调试一些代码,想要找出何时访问了特定的字典。实际上,这是一个继承了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
,并改变了对超类构造函数的调用。然而,似乎什么都没有发生。我原以为自己很聪明,但我想知道是否应该换个方向。
谢谢帮助!