On 06/30/2011 11:29 PM, Steven D'Aprano wrote:
The dir() function is designed for interactive use, inspecting objects for
the names of attributes and methods.
Here is an enhanced version that allows you to pass a glob to filter the
names you see:
Comments and improvements welcome.
Having not seen any other comments on it fly by, I thought I'd
respond. While in general I like the idea, I'm not sure when I'd
go to the effort of bringing the function into my namespace when
I could just do something like
>>> [s for s in dir(...) if test_of_interest(s)]
If it came in as an effortless (i.e. O(1) where I do it once and
never again; not an O(n) where n=the number of times I invoke
Python) default replacement for dir(), I'd reach for it a lot
more readily. I seem to recall there's some environment-var or
magic file-name that gets sourced on every startup.
I use the list-comp version on a regular basis:
# implementation of which magic methods?
[s for s in dir(foo) if s.startswith('__') and s.endswith('__')]
# ignore magic methods
[s for s in dir(foo) if not (s.startswith('__') and
s.endswith('__'))]
# constants
[s for s in dir(foo) if s.isupper()]
# keywording
[s for s in dir(foo) if 'bar' in s.lower()]
Anyways, even if it just includes a brief blurb about "and this
is how you get it automatically in every Python session" (or a
link to the docs on how to do that), it would raise it from "meh"
to "nifty".
-tim
--
http://mail.python.org/mailman/listinfo/python-list