hiding modules in __init__.py

B

Brendan Miller

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?

Thanks,
Brendan
 
C

Chris Rebert

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?

Generally the latter on account of Python's "we are all consenting
adults here" philosophy.

Cheers,
Chris
 
G

Gabriel Genellina

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,152
Members
46,697
Latest member
AugustNabo

Latest Threads

Top