Visualize class inheritance hierarchy
Aaron "Castironpi" Brady
castironpi at gmail.com
Wed Sep 24 02:22:00 CEST 2008
On Sep 23, 5:53 pm, Rob Kirkpatrick <robert.d.kirkpatr... at gmail.com>
> Hi All,
> I just finished debugging some code where I needed to determine why
> one subclass had a bound method and another did not. They had
> different pedigree's but I didn't know immediately what the
> differences were.
> I ended up walking the hierarchy, going back one class at a time
> through the code, for the two subclasses (hierarchy ~7 classes deep
> each) to see whom they inherited from. Short of writing this down on
> paper, is there any way to graphically display the pedigree of an
> object/class? "Graphically" can be text output to the terminal, don't
> need anything special...
> I'm assuming this has been discussed before, but I'm lacking any
> Google keywords that bring up the appropriate discussion.
If you're using new-style classes, check out the __mro__ member, which
no doesn't show up in its dir(). Otherwise, we can try a settrace
(frame.f_code.co_name has the name of the class being defined in a
class statement) or accumulate some class statements with a custom
'parser' run in the module 'parser'.
More information about the Python-list