A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2017-May/147830.html below:

[Python-Dev] __getattribute__'s error is not available in __getattr__

[Python-Dev] __getattribute__'s error is not available in __getattr__Nick Coghlan ncoghlan at gmail.com
Tue May 2 00:44:56 EDT 2017
On 2 May 2017 at 13:47, Jason Maldonis <jjmaldonis at gmail.com> wrote:
> Hi everyone,
>
> If this should be asked in learn python I apologize -- please just tell me
> without answering.
>
> I'm working on a large class architecture and I find myself often
> overloading __getattr__.  I am continuously running into the issue where I
> want __getattr__ to have access to the error that was raised in
> __getattribute__, but it seems completely unavailable. Is that true?

__getattr__ can be called *from* __getattribute__, so when it runs,
__getattribute__ hasn't necessarily failed yet - it may just be on its
last resort strategy for attribute retrieval.

If you're sure the base class __getattribute__ doesn't call
__getattr__ directly, you can do:

    def __getattribute__(self, name):
        try:
            return super().__getattribute__(name)
        except AttributeError:
            return self.__getattr__(name)

However, would you mind filing a documentation bug for this? I can't
find anything in the language or library reference that explicitly
states whether or not `object.__getattribute__` itself calls
`__getattr__` directly, and that's a docs limitation which should be
addressed.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4