[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