I am trying to understand the difference between __getattr__
and __getattribute__
, however, I am failing at it.
The answer to the Stack Overflow question Difference between __getattr__
vs __getattribute__
says:
__getattribute__
is invoked before looking at the actual attributes on
the object, and so can be tricky to
implement correctly. You can end up in
infinite recursions very easily.
I have absolutely no idea what that means.
Then it goes on to say:
You almost certainly want
__getattr__
.
Why?
I read that if __getattribute__
fails, __getattr__
is called. So why are there two different methods doing the same thing? If my code implements the new style classes, what should I use?
I am looking for some code examples to clear this question. I have Googled to best of my ability, but the answers that I found don’t discuss the problem thoroughly.
If there is any documentation, I am ready to read that.