Dada una clase Foo(ya sea una clase de estilo nuevo o no), ¿cómo se generan todas las clases base, en cualquier lugar de la jerarquía de herencia issubclass?
python
class
inheritance
oop
introspection
Sridhar Ratnakumar
fuente
fuente

inspect.getmro(obj)lugar de hacerloinspect.getmro(type(obj)).Vea la
__bases__propiedad disponible en una pythonclass, que contiene una tupla de las clases base:fuente
getmroexplícitamente dice "Ninguna clase aparece más de una vez en esta tupla"?__bases__solo sube un nivel . (Como su utilidad recursiva implica, pero una mirada superficial al ejemplo podría no captar eso.)inspect.getclasstree()creará una lista anidada de clases y sus bases. Uso:fuente
python -c 'import inspect; from pprint import pprint as pp; pp(inspect.getclasstree(inspect.getmro(IOError)))'puedes usar la
__bases__tupla del objeto de clase:La tupla devuelta por
__bases__tiene todas sus clases base.¡Espero eso ayude!
fuente
__bases__atención que en python 3.x cada clase hereda de la clase de objeto base.
fuente
Según el documento de Python , también podemos simplemente usar el
class.__mro__atributo o elclass.mro()método:fuente
Aunque la respuesta de Jochen es muy útil y correcta, ya que puede obtener la jerarquía de clases utilizando el método .getmro () del módulo de inspección, también es importante resaltar que la jerarquía de herencia de Python es la siguiente:
ex:
Una clase heredadora
ex:
Una clase heredada
Una clase puede heredar de otra: los atributos de la clase 'se heredan', en particular, sus métodos se heredan, esto significa que las instancias de una clase heredadora (secundaria) pueden acceder atribuidas a la clase heredada (principal)
instancia -> clase -> luego clases heredadas
utilizando
le mostrará la jerarquía, dentro de Python.
fuente