0

我知道您在重新定义setattr方法时应该注意,您可能会以循环结束。

我知道有两种解决方案可以避免循环:

1)使用对象超类,调用:

object.__setattr__(instance,attr,value)

2)使用类字典:

self.__dict__[attr] = value

我的问题是,__dict__解决方案不应该也陷入循环吗?为什么不是?

是因为我们这样称呼对象(一切都是对象)还是什么__setattr____dict__

如果是这样,它不应该对所有事情都一样吗?

4

1 回答 1

5

为什么你会期望它以循环结束?

instance.__dict__[attr] = value基本上是什么object.__setattr__(instance,attr,value)(对于普通属性)。请注意,__dict__[attr] = whatever 根本不调用__setattr__ 它调用__setitem__which 完全是一种不同的方法。

于 2013-05-30T16:02:06.890 回答