In [2]:
from objbrowser import browse

a = 67; pi = 3.1415 

browse(locals())

inspect


In [3]:
import inspect

In [6]:
help(inspect.getclasstree)


Help on function getclasstree in module inspect:

getclasstree(classes, unique=False)
    Arrange the given list of classes into a hierarchy of nested lists.
    
    Where a nested list appears, it contains classes derived from the class
    whose entry immediately precedes the list.  Each entry is a 2-tuple
    containing a class and a tuple of its base classes.  If the 'unique'
    argument is true, exactly one entry appears in the returned structure
    for each class in the given list.  Otherwise, classes using multiple
    inheritance and their descendants will appear multiple times.


In [28]:
inspect.getclasstree([object])


Out[28]:
[(object, ())]

In [26]:
class M:
    pass
class N:
    pass
class O:
    pass

In [27]:
inspect.getclasstree([M, N, O], unique=True)


Out[27]:
[(object, ()),
 [(__main__.M, (object,)), (__main__.N, (object,)), (__main__.O, (object,))]]

In [4]:
class A:
    pass

class B:
    pass

class C(A):
    pass

class D(B):
    pass

class E(C, D):
    pass

In [9]:
inspect.getclasstree([A, B, C, D, E])


Out[9]:
[(object, ()),
 [(__main__.A, (object,)),
  [(__main__.C, (__main__.A,)), [(__main__.E, (__main__.C, __main__.D))]],
  (__main__.B, (object,)),
  [(__main__.D, (__main__.B,)), [(__main__.E, (__main__.C, __main__.D))]]]]

In [11]:
inspect.getclasstree([A, B, C, D, E], unique=True)


Out[11]:
[(object, ()),
 [(__main__.A, (object,)),
  [(__main__.C, (__main__.A,)), [(__main__.E, (__main__.C, __main__.D))]],
  (__main__.B, (object,)),
  [(__main__.D, (__main__.B,))]]]

In [14]:
tree = inspect.getclasstree([A, B, C, D, E], unique=True)

len(tree)


Out[14]:
2

In [15]:
base, derived = tree

In [16]:
base


Out[16]:
(object, ())

In [17]:
derived


Out[17]:
[(__main__.A, (object,)),
 [(__main__.C, (__main__.A,)), [(__main__.E, (__main__.C, __main__.D))]],
 (__main__.B, (object,)),
 [(__main__.D, (__main__.B,))]]

In [23]:
import networkx as nx

In [25]:
dg = nx.DiGraph(name="Class Tree")