gpt4 book ai didi

python - __setattr__ vs 类属性来设置属性

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:29 24 4
gpt4 key购买 nike

考虑以下两个类定义,其中为了在为属性赋值之前进行额外检查(例如,跟踪修改后的变量、检查有效性等),我重写了第一个中的 __setattr__ 方法,在第二个方法中我使用属性。

class A(object):
def __init__(self, x):
self.x = x

def __setattr__(self, name, value):
# do something
self.__dict__[name] = value

class B(object):
def __init__(self, x):
self.x = x

@property
def x(self):
return self.x

@x.setter
def x(self, v):
# do something
self.x = v

在我看来,他们的行为方式是一样的。
两者之间有什么区别吗?应该首选哪一个?为什么?

最佳答案

__setattr__ 更通用,因为它会针对 A().foo = 3 运行,无论您提供什么属性 foo。属性 setter 特定于单个明确定义的属性,不能用于“意外”创建属性。

关于python - __setattr__ vs 类属性来设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52105186/

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