hiding modules in __init__.py
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Tue Oct 21 01:16:01 EDT 2008
En Sat, 18 Oct 2008 16:03:19 -0300, Brendan Miller <catphive at catphive.net>
escribió:
> How would I implement something equivalent to java's package private in
> python?
>
> Say if I have
>
> package/__init__.py
> package/utility_module.py
>
> and utility_module.py is an implementation detail subject to change.
>
> Is there some way to use __init__.py to hide modules that I don't want
> clients to see? Or is the best practice just to name the module you don't
> want clients to use _utility_module and have it private by convention?
If you don't import utility_module in __init__ (or delete the name after
using it), it won't show up if someone does "from package import *", nor
in dir(package). Plus if you don't menction it in the docs, the only way
to discover it would be to look at the directory contents - to "peek the
implementation", I'd say.
You could always name it _utility_module.py if you want to make perfectly
clear that it's for internal use only, but I've seldom seen such module
names.
--
Gabriel Genellina
More information about the Python-list
mailing list