[Python-Dev] dir()/__all__/etc
Moshe Zadka
moshez@zadka.site.co.il
Fri, 12 Jan 2001 11:57:32 +0200 (IST)
On Thu, 11 Jan 2001 11:11:23 -0600 (CST), Skip Montanaro <skip@mojam.com> wrote:
>
> 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)?
And, while we're at it, the following bit too can be in the PYTHONSTARTUP:
def display(x):
import __builtin__
__builtin__._ = None
if type(x) == type(''):
print `x`
else:
print x
__built__._ = x
import sys
sys.displayhook = display
--
Moshe Zadka <sig@zadka.site.co.il>
This is a signature anti-virus.
Please stop the spread of signature viruses!