[Python-Dev] PEP 562

Serhiy Storchaka storchaka at gmail.com
Wed Nov 15 02:43:47 EST 2017


14.11.17 22:34, Ivan Levkivskyi пише:
> This function will be called only if ``name`` is not found in the module
> through the normal attribute lookup.

It is worth to mention that using name as a module global will bypass 
__getattr__. And this is intentional, otherwise calling __getattr__ for 
builtins will harm a performance.

> Backwards compatibility and impact on performance
> =================================================

What is affect on pydoc, word completion, inspect, pkgutil, unittest?

>    def keep_pickleable(func):
>        func.__name__ = func.__name__.replace('_deprecated_', '')
>        func.__qualname__ = func.__qualname__.replace('_deprecated_', '')
>        return func
> 
>    @keep_pickleable
>    def _deprecated_old_function(arg, other):
>        ...

I would create more standard helpers (for deprecation, for lazy 
importing). This feature is helpful not by itself, but because it will 
be used for implementing new features. Using __getattr__ directly will 
need to write a boilerplate code. Maybe when implementing these helper 
you will discover that this PEP needs some additions.



More information about the Python-Dev mailing list