gpt4 book ai didi

python - __setattr__ 和 __dict__ 之间的区别

转载 作者:行者123 更新时间:2023-12-03 20:00:34 25 4
gpt4 key购买 nike

如果我想为一个实例设置一个属性:
我可以用 __setattr__(key, value)self.__dict__[key]=value我想知道如何__setattr__有效,如果 __setattr__只需在 __dict__ 中设置 k,v ,两种方式有什么区别? setattr 存在的意义是什么?

最佳答案

__dict__是一个内部字典,包含所有的内部变量,__setattr__实际上是一个方法,当你试图设置一个属性时,它总是被调用,因此,你可以拦截这些 Action 并据此采取行动。
示例代码可以帮助您了解差异:

class Foo:
def __setattr__(self, key, value):
print(f'Setting {key} to {value}')
self.__dict__[key] = value

f = Foo()
f.__dict__['test'] = 1
f.__setattr__('test', 2)
f.test = 3
输出将是:
Setting test to 2
Setting test to 3
原因是通过访问 __dict__ ,您正在直接访问内部对象字典和 __setattr__方法被跳过。

关于python - __setattr__ 和 __dict__ 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67189446/

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