[Python-Dev] module customization

Brett Cannon brett at python.org
Thu Nov 16 14:18:28 EST 2017


On Wed, 15 Nov 2017 at 16:27 Ethan Furman <ethan at stoneleaf.us> wrote:

> So there are currently two ways to customize a module, with PEP 562
> proposing a third.
>
> The first method involves creating a standard class object, instantiating
> it, and replacing the sys.modules entry with it.
>
> The second way is fairly similar, but instead of replacing the entire
> sys.modules entry, its class is updated to be the
> class just created -- something like sys.modules['mymod'].__class__ =
> MyNewClass .
>
> My request:  Can someone write a better example of the second method?  And
> include __getattr__ ?
>

There's actually an example in the stdlib thanks to
importlib.util.LazyLoader
<https://docs.python.org/3/library/importlib.html#importlib.util.LazyLoader>,
although it uses __getattribute__() and not __getattr__():

https://github.com/python/cpython/blob/d505a29a15a6f9315d8c46445b8a0cccfc2048b8/Lib/importlib/util.py#L212


-Brett


> My question:  Does that __getattr__ method have 'self' as the first
> parameter?  If not, why not, and if so, shouldn't
> PEP 562's __getattr__ also take a 'self'?
>
> --
> ~Ethan~
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/brett%40python.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20171116/92affb9b/attachment.html>


More information about the Python-Dev mailing list