0
我需要在设置属性之前检查属性†。一个天真的实施将是这样的:在设置属性之前检查属性的最佳方法是什么?
class C(object):
x = 5
def __setattr__(self, name, value):
if hasattr(self, name):
x = getattr(self, name)
if x == 5:
print 'do something'
object.__setattr__(self, name , value)
然而,这会触发类__getattribute__
方法,它必须来避免这里。从我所知道的情况来看,直接在班级'__dict__
中搜索可能会诀窍;但是由于这是一个意图被用户分类的类,我想__slots__
和MRO可能会增加复杂性。
鉴于这些考虑因素,在设置属性之前检查属性的最佳方法是什么?
†在充分披露的利益,这个类实际上是要写成C
延伸;不过,我并不认为这个策略偏离了python实现的重要性。