193 votes

Enumérez toutes les classes de base dans la hiérarchie d'une classe donnée ?

Étant donné une classe Foo (qu'il s'agisse d'un nouveau style ou non), comment générer tous les classes de base - n'importe où dans la hiérarchie de l'héritage - elle issubclass de ?

19voto

Serj Points 748

En python 3.7 vous n'avez pas besoin d'importer inspect, type.mro vous donnera le résultat.

class A: ... pass ... class B(A): ... pass ... type.mro(B) [<class 'main.B'>, <class 'main.A'>, <class 'object'>]

attention que dans python 3.x chaque classe hérite de la classe objet de base.

2voto

Carson Points 141

Bien que la réponse de Jochen soit très utile et correcte, car vous pouvez obtenir la hiérarchie des classes en utilisant la méthode .getmro() du module inspect, il est également important de souligner que la hiérarchie d'héritage de Python est la suivante :

ex :

class MyClass(YourClass):

Une classe héritière

  • Classe enfant
  • Classe dérivée
  • Sous-classe

ex :

class YourClass(Object):

Une classe héritée

  • Classe parentale
  • Classe de base
  • Superclasse

Une classe peut hériter d'une autre - Les attributs de la classe sont hérités - en particulier, ses méthodes sont héritées - cela signifie que les instances d'une classe héritante (enfant) peuvent accéder aux attributs de la classe héritée (parent).

instance -> classe -> puis classes héritées

en utilisant

import inspect
inspect.getmro(MyClass)

vous montrera la hiérarchie, dans Python.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X