0

我知道方法__getattribute____getattr__没有做同样的事情;前者负责所有属性访问,后者(如果已定义)在前者引发 AttributeError 时被调用。

令我困惑的是,为什么对于一种通常试图消除混淆的语言,甚至存在两个与属性访问相关的名称相似的方法。我什至想不出我必须定义一个__getattr__; 我可以只定义在 if 语句或 try 语句__getattribute__中使用的 a。object.__getattribute__此外,命名为属性访问的内置函数getattr会误导人们认为__getattr__是属性访问的首选方法。这两种方法背后的历史是什么?它们仍然存在是否有充分的理由?

4

0 回答 0