2009-11-03 5 views
8

Étant donné un objet, comment dire si c'est une classe, et une sous-classe d'une classe donnée Foo?Quel est l'équivalent issubclass de isinstance en python?

par exemple.

class Bar(Foo): 
    pass 

isinstance(Bar(), Foo) # => True 

issubclass(Bar, Foo) # <--- how do I do that? 
+24

Wow, c'est une bonne chose que vous n'ayez pas simplement essayé de lancer ceci dans l'interpréteur Python, cela aurait pu complètement frire votre PC! ;-) – nikow

+0

doh! je me sens stupide maintenant :) –

+3

Juste une remarque: La plupart du temps les gens veulent vérifier les types, ce qu'ils veulent vraiment faire est de vérifier si les méthodes sont mises en œuvre ... nécessaires – elzapp

Répondre

22

Il fonctionne exactement comme on pouvait s'y attendre à travailler ...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

print issubclass(Bar, Foo) # True 
print issubclass(Bar2, Foo) # False 

Si vous voulez savoir si un exemple d'une classe dérivée d'une classe de base donnée, vous pouvez utiliser :

bar_instance = Bar() 
print issubclass(bar_instance.__class__, Foo)