Visualize class inheritance hierarchy

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Rob Kirkpatrick

    Visualize class inheritance hierarchy

    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? "Graphicall y" 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.

    Cheers,
    Rob
  • Aaron \Castironpi\ Brady

    #2
    Re: Visualize class inheritance hierarchy

    On Sep 23, 5:53 pm, Rob Kirkpatrick <robert.d.kirkp atr...@gmail.co m>
    wrote:
    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?  "Graphicall y" 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.
    >
    Cheers,
    Rob
    Compare their __mro__ members if they are new-style. The depth-first
    search for the member you're looking for is straightforward in Python,
    even if maybe not immediately obvious.

    If not, we can try a settrace and a search for when they are defined,
    and build an __mro__ manually.

    Comment

    • Aaron \Castironpi\ Brady

      #3
      Re: Visualize class inheritance hierarchy

      On Sep 23, 5:53 pm, Rob Kirkpatrick <robert.d.kirkp atr...@gmail.co m>
      wrote:
      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?  "Graphicall y" 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.
      >
      Cheers,
      Rob
      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.c o_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'.

      Comment

      Working...