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__() <http://docs.python.org/reference/datamodel.html#object.__getattr__>, the latter will not be called unless __getattribute__() <http://docs.python.org/reference/datamodel.html#object.__getattribute__> either calls it explicitly or raises an AttributeError <http://docs.python.org/library/exceptions.html#exceptions.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

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to