gpt4 book ai didi

python - 如何检测字典修改?

转载 作者:太空狗 更新时间:2023-10-29 18:32:27 26 4
gpt4 key购买 nike

我已经将 dict 子类化,需要检测它的所有修改。

(我知道我无法检测到存储值的就地修改。没关系。)

我的代码:

def __setitem__(self, key, value):
super().__setitem__(key, value)
self.modified = True

def __delitem__(self, key):
super().__delitem__(key)
self.modified = True

问题是它只适用于直接分配或删除。它不检测 pop()popitem()clear()update() 所做的更改.

为什么在添加或删除项目时绕过 __setitem____delitem__?我是否也必须重新定义所有这些方法(pop 等)?

最佳答案

对于这种用法,你不应该继承 dict 类,而是使用 collections 的抽象类Python标准库模块。

您应该继承 MutableMapping 抽象类并覆盖以下方法:__getitem____setitem____delitem____iter____len__,所有这一切都通过使用内部字典。抽象基类确保所有其他方法都将使用这些方法。

class MyDict(collections.MutableMapping):
def __init__(self):
self.d = {}
# other initializations ...

def __setitem__(self, key, value):
self.d[key] = value
self.modified = true
...

关于python - 如何检测字典修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com