Greg Ewing a écrit :
Pascal Chambon wrote:
I don't follow you there - in my mind, the
default __getattribute__ could simply have wrapped all its operations
inside soem kind of "try..catch AttributeError:" mechanism, and thus
been able to fallback to __getattr__ in any way.
But then it would be incorrect to say that "__getattribute__
raises an exception".
When we say that a function raises an exception, we normally
mean that the exception propagates out of the function and
can be seen by the caller, not that it was raised and caught
somewhere inside the function.
Indeed, but I've never run into any doc mentionning that the default
__getattribute__ raised in exception instead of forwarding to
__getattr__ by itself.
All I've found is "If the class also defines __getattr__(),
the latter will not be
called unless __getattribute__()
either calls it explicitly or raises an
AttributeError";
that sentence which simply offers two alternatives for the behaviour of
customized __gettattribute__ methods, without giving any hint on the
behaviourthat was chosen when implementing object.__gettattribute__.
Or am I missing some other doc which I'm supposed to know :?
"In the face of ambiguity, refuse the temptation to guess", as we say
anyway, so I propose we patch the doc to clarify this point for
newcomers ^^
Regards,
Pascal