J'ai une fonction qui accepte une classe (pas une instance) et, selon qu'il s'agit d'une classe spécifique ou d'une sous-classe de, je dois passer dans l'une des deux autres fonctions d'usine (tierces).Comment savoir si une classe descend d'une autre classe
(Pour prévenir toute objection, je suis conscient que ce n'est pas très Pythonic, mais je suis dépendant de ce que la bibliothèque tiers accepte.)
issubclass
ne fonctionne que pour les instances, pas de classe objets eux-mêmes. Je suppose que je pourrais instancier la classe, faire issubclass
et jeter l'instance, mais cela semble un peu inutile.
Voici ce que je fais en ce moment, en me basant sur l'attribut intégré mro pour savoir si une certaine classe est dans la liste des ancêtres de ma classe. Est-ce sûr, et y a-t-il une meilleure façon de le faire?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)
Aargh, je prêtaient à confusion avec isinstance. Merci. –