在调用setattr时,当试图设置某个带有setter的属性的值时,这将导致无限递归循环:class TypeSystem(object):
def __setattr__(self, key, value):
if the_special_case is True:
# do something
else:
super(TypeSystem,self).__setattr__(key,value)
class Entity(TypeSystem):
@property
def some_prop(self):
some_prop = self.data.get('some_prop')
if some_prop is None and hasattr(self,"some_prop"):
some_prop = self.some_prop
return some_prop
@some_prop.setter
def some_prop(self,value):
self.some_prop = value
>>> entity = Entity()
>>> entity.some_prop = 3
定义为普通属性的递归属性是不起作用的。在
但是由于某些_prop不是预先定义的,所以它看起来像是在调用setattr,而不是调用了某个\u prop的setter,因此它被拉入一个循环。在
我也试过。。。。在
^{pr2}$
但它仍然进入递归循环。我不知道该怎么避免。在