FEEDBACK WANTED: Type/class unification
Paul Prescod
paulp at ActiveState.com
Sun Jul 29 12:39:52 EDT 2001
Guido van Rossum wrote:
>
> Paul Prescod <paulp at ActiveState.com> writes:
>
> > I'm reading the section on the introspection API but I don't understand
> > something.
> >
> > 1. If I am sitting at an interpreter prompt and I have an object how do
> > I figure out the complete list of currently available attributes
> > available on that object.
>
> Same as currently if it's a class: look in inst.__dict__ for instance
> vars, then look in inst.__class__ for methods and class vars, then
> recursively look through int.__class__.__bases__ for inherited methods
> and class vars. Weed out duplicates.
Is there any reason that this is not defined as a built-in function? I
propose a function called attrs().
>...
> > 2. If I have an object that hides its attributes behind an __getattr__,
> > is there any way to tweak the list returned by the API described above?
You didn't answer this one. If I'm wrapping a COM object and I want to
dynamically provide the list of methods and other attributes when some
asks (i.e. "override" dir() or attrs()).
> .... I'd like something as close to
> > this as is realistically possible:
> >
> > def attrs(x):
> > return [y for y in all_possible_strings if hasattr(x, y)]
>
> (Note: this may return an infinite list!)
Right, that's why I'm asking for something as *close as realistically
possible*. i.e. a built-in function that gets me the attributes list.
99% of the time when I use dir(), I wish it behaved as I described
attrs() and I just have to work around its limitations. I would like for
there to be a function that returns as many attributes as is
realistically possible.
>...
>
> BTW, now also linked from the python.org home page side bar.
Great! Thanks!
--
Take a recipe. Leave a recipe.
Python Cookbook! http://www.ActiveState.com/pythoncookbook
More information about the Python-list
mailing list