[Python-Dev] dir()/__all__/etc
Skip Montanaro
skip@mojam.com (Skip Montanaro)
Thu, 11 Jan 2001 11:11:23 -0600 (CST)
I know Guido has said he doesn't want to fiddle with dir(), but my sense of
things from the overall discussion of the __exports__ concept tells me that
when used interactively dir() often presents confusing output for new Python
users.
I twiddled CGIHTTPServer to have __all__ and added the following dir()
function to my PYTHONSTARTUP file:
def dir(o,showall=0):
if not showall and hasattr(o, "__all__"):
x = list(o.__all__)
x.sort()
return x
from __builtin__ import dir as d
return d(o)
Compare its output with and without showall set:
>>> dir(CGIHTTPServer)
['CGIHTTPRequestHandler', 'test']
>>> dir(CGIHTTPServer,1)
['BaseHTTPServer', 'CGIHTTPRequestHandler', 'SimpleHTTPServer', '__all__',
'__builtins__', '__doc__', '__file__', '__name__', '__version__',
'executable', 'nobody', 'nobody_uid', 'os', 'string', 'sys', 'test',
'urllib']
I haven't demonstrated any great programming prowess with this little
function, but I rather suspect it may be beyond most brand new users. If
Guido can't be convinced to allow dir() to change, how about adding a sample
PYTHONSTARTUP file to the distribution that contains little bits like this
and Ping's pydoc.help stuff (assuming it gets into the distro, which I hope
it does)?
Skip