[Python-Dev] Comment on PEP 562 (Module __getattr__ and __dir__)

Steven D'Aprano steve at pearwood.info
Sun Nov 19 21:34:09 EST 2017


On Sun, Nov 19, 2017 at 05:34:35PM -0800, Guido van Rossum wrote:
> On Sun, Nov 19, 2017 at 4:57 PM, Steven D'Aprano <steve at pearwood.info>
> wrote:

> > A minor point: this should(?) be written in terms of the public
> > interface for accessing namespaces, namely:
> >
> >               getter = vars(mod)["__getattr__"]
> 
> Should it? The PEP is not proposing anything for other namespaces. What
> difference do you envision this way of specifying it would make?

I don't know if it should -- that's why I included the question mark.

But my idea is that __dict__ is the implementation and vars() is the 
interface to __dir__, and we should prefer using the interface rather 
than the implementation unless there's a good reason not to.

(I'm not talking here about changing the actual name lookup code to go 
through vars(). I'm just talking about how we write the equivalent 
recipe.)

Its not a big deal either way, __dict__ is already heavily used and 
vars() poorly known. Call it a matter of taste, if you like, but in my 
opinion the fewer times we directly reference dunders, the better.


-- 
Steve


More information about the Python-Dev mailing list