(original) (raw)

On Wed, Nov 15, 2017 at 4:27 PM, Ethan Furman <ethan@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\_\_ ?

My question: Does that \_\_getattr\_\_ method have 'self' as the first parameter?

It does.
If not, why not, and if so, shouldn't PEP 562's \_\_getattr\_\_ also take a 'self'?

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.

--
--Guido van Rossum (python.org/\~guido)