En Sat, 18 Oct 2008 16:03:19 -0300, Brendan Miller <[EMAIL PROTECTED]> 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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to