On Friday 13 May 2005 01:21, Christopher J. Bottaro wrote: > For those of you following the Python Documentation thread, this is a good > example of how the PHP manual is "better". I found how to do this in a few > seconds in PHP. I searched the Python docs for "class name", "classname", > "introspection" and "getclass". I looked in the Class section of the > tutorial also and also the Programming FAQ. The "related functions" > section of the PHP manual is really helpful. It would be cool if in the > section for the built-in function isinstance() or issubclass() there is a > section for "related functions" that would point me to getclassname(obj) > (if it exists).
There is no function to do this in Python (so you'll have a hard time finding it in the docs :-)), but there is a __bases__ member in any class/type which lists the immediate bases (and this is documented in the language reference, along with a reference in the tutorial when OO is introduced). Now, the following method lists all base classes: def getBases(cls): bases = [] stack = [cls] new_stack = [] while stack: for cls in stack: if cls not in bases: bases.append(cls) new_stack.extend(cls.__bases__) stack = new_stack new_stack = [] return bases Example: >>> class x(object): ... pass ... >>> class y(x): ... pass ... >>> class z(object): ... pass ... >>> class a(z,y): ... pass ... >>> def getBases(cls): ... bases = [] ... stack = [cls] ... new_stack = [] ... while stack: ... for cls in stack: ... if cls not in bases: ... bases.append(cls) ... new_stack.extend(cls.__bases__) ... stack = new_stack ... new_stack = [] ... return bases ... >>> getBases(a) [<class '__main__.a'>, <class '__main__.z'>, <class '__main__.y'>, <type 'object'>, <class '__main__.x'>] HTH! --- Heiko. -- http://mail.python.org/mailman/listinfo/python-list