标签: python class methods
请考虑以下两个类定义,在第一个定义中,为了在将值分配给属性之前进行其他检查(例如,跟踪修改后的变量,检查有效性等),我会覆盖{{ 1}}方法,在第二种方法中,我使用属性。
__setattr__
在我看来,它们的行为方式相同。 两者之间有什么区别吗?应该选择哪个,为什么?
答案 0 :(得分:2)
__setattr__更通用,因为它将为A().foo = 3运行,无论您提供什么属性foo。属性设置器特定于单个明确定义的属性,不能用于“意外”创建属性。
A().foo = 3
foo