Visualize class inheritance hierarchy
Christian Heimes
lists at cheimes.de
Tue Sep 23 19:58:56 EDT 2008
Rob Kirkpatrick wrote:
> I'm assuming this has been discussed before, but I'm lacking any
> Google keywords that bring up the appropriate discussion.
You are looking for "mro" aka method resolution order. The inspect
module contains several helper functions to inspect a class hierarchy.
The following interactive session should give you an impression how to
use the functions:
>>> import inspect
>>> import pprint
>>> from sqlalchemy.types import DateTime
>>> inspect.getmro(DateTime)
(<class 'sqlalchemy.types.DateTime'>, <class
'sqlalchemy.types.TypeEngine'>, <class 'sqlalchemy.types.AbstractType'>,
<type 'object'>
>>> DateTime.__bases__
(<class 'sqlalchemy.types.TypeEngine'>,)
>>> pprint.pprint(inspect.getclasstree(inspect.getmro(DateTime)))
[(<type 'object'>, ()),
[(<class 'sqlalchemy.types.AbstractType'>, (<type 'object'>,)),
[(<class 'sqlalchemy.types.TypeEngine'>,
(<class 'sqlalchemy.types.AbstractType'>,)),
[(<class 'sqlalchemy.types.DateTime'>,
(<class 'sqlalchemy.types.TypeEngine'>,))]]]]
>>> [cls for cls in inspect.getmro(DateTime) if hasattr(cls, '__init__')]
[<class 'sqlalchemy.types.DateTime'>, <class
'sqlalchemy.types.TypeEngine'>, <class 'sqlalchemy.types.AbstractType'>,
<type 'object'>]
>>> [cls for cls in inspect.getmro(DateTime) if hasattr(cls, 'adapt')]
[<class 'sqlalchemy.types.DateTime'>, <class 'sqlalchemy.types.TypeEngine'>]
More information about the Python-list
mailing list