[Python-Dev] Comment on PEP 562 (Module __getattr__ and __dir__)

Serhiy Storchaka storchaka at gmail.com
Sun Nov 19 15:41:52 EST 2017


19.11.17 22:24, Mark Shannon пише:
> Just one comment. Could the new behaviour of attribute lookup on a 
> module be spelled out more explicitly please?
> 
> 
> I'm guessing it is now something like:
> 
> `module.__getattribute__` is now equivalent to:
> 
> def __getattribute__(mod, name):
>      try:
>          return object.__getattribute__(mod, name)
>      except AttributeError:
>          try:
>              getter = mod.__dict__["__getattr__"]
>          except KeyError:
>              raise AttributeError(f"module has no attribute '{name}'")
>          return getter(name)

I think it is better to describe in the terms of __getattr__.

def ModuleType.__getattr__(mod, name):
     try:
         getter = mod.__dict__["__getattr__"]
     except KeyError:
         raise AttributeError(f"module has no attribute '{name}'")
     return getter(name)

The implementation of ModuleType.__getattribute__ will be not changed 
(it is inherited from the object type).



More information about the Python-Dev mailing list