<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Nov 15, 2017 at 4:27 PM, Ethan Furman <span dir="ltr"><<a href="mailto:ethan@stoneleaf.us" target="_blank">ethan@stoneleaf.us</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">So there are currently two ways to customize a module, with PEP 562 proposing a third.<br>
<br>
The first method involves creating a standard class object, instantiating it, and replacing the sys.modules entry with it.<br>
<br>
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 .<br>
<br>
My request:  Can someone write a better example of the second method?  And include __getattr__ ?<br>
<br>
My question:  Does that __getattr__ method have 'self' as the first parameter?</blockquote><div><br></div><div>It does.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If not, why not, and if so, shouldn't PEP 562's __getattr__ also take a 'self'?<br clear="all"></blockquote><div><br></div><div>Not really, since there's only one module (the one containing the __getattr__ function). Plus we already have a 1-argument module-level __getattr__ in mypy. See PEP 484.<br></div></div><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>