理解__getattr__和__getattribute__之间的区别

13 浏览
0 Comments

理解__getattr__和__getattribute__之间的区别

我试图理解__getattr____getattribute__之间的区别,但是我失败了。

Stack Overflow问题Difference between __getattr__ vs __getattribute__答案中说:

在查看对象的实际属性之前,会首先调用__getattribute__,因此正确实现它可能很棘手。你很容易陷入无限递归的境地。

我完全不知道这是什么意思。

然后它继续说:

你几乎肯定想要使用__getattr__

为什么呢?

我读到如果__getattribute__失败,会调用__getattr__。那么为什么有两个不同的方法做同样的事情呢?如果我的代码实现了新式类,我应该使用哪个?

我正在寻找一些代码示例来解答这个问题。我已经尽力在谷歌上搜索,但是找到的答案没有全面讨论这个问题。

如果有任何文档,我愿意阅读。

0