[Python-ideas] Importing public symbols and simultainiously privatizing them, is too noisy
Rick Johnson
rantingrickjohnson at gmail.com
Wed Mar 16 23:02:05 EDT 2016
On Wednesday, March 16, 2016 at 9:19:52 PM UTC-5, David Wilson wrote:
>
> On Wed, Mar 16, 2016 at 06:58:55PM -0700, Rick Johnson wrote:
>
> > I avoid __all__ like the plague. Too easy for it to get out of sync
> with the
> > API when i forget to add a new symbol.
>
> In that case why not simply also avoid 'from .. import *' like the
> plague?
I do.
> It seems far simpler than renaming every single import, which
> places a permanent burden on future maintainers, code completing
> editors, grep, etc.
>
Oh, i understand your confusion now. You think i'm importing *EVERY* symbol
this way. No, i'm only importing the symbols i need. And, just FYI, not all
modules exist as a "top level component". Many times, you need to split
parts of a "component hierarchy" across multiple modules, with each module
in the "chain", building upon the last, to create a complex system, that is
greater than the sum of all it's parts.
For instance: I might start with a "base module" that exposes a few public
symbols. Granted, the module may have many private variables, but it only
exposes a handful to the public. If i then "inherit" from that module, and
"extend it", the symbols that i import from the first module may have made
sense to be public in the first module, but now, in the new module, they
are merely sub-components of a larger interface, and should therefore be
private.
(i use the terms "extend", and "inherit" very loosely here)
If i simply wanted *ALL* the pubic symbols, and the module i was importing
*FROM* followed the Python style guide by using a single underscore for
private symbols, then "from module import *" is the way to go -- because i
would *ONLY* receive the public symbols.
> FWIW I'd probably _break _down _and cry _if _faced _with _maintaining
> _code _like _that.
>
This reminds me of a funny story. I once told my doctor "When i do this, it
hurts". And you what he told me? He said: "Well, don't do that"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160316/912020c8/attachment.html>
More information about the Python-ideas
mailing list