2009-11-03 13 views
8

Gegeben ein Objekt, wie erkläre ich, ob es eine Klasse und eine Unterklasse einer bestimmten Klasse Foo ist?Was ist das issubclass Äquivalent von isinstance in Python?

z.B.

class Bar(Foo): 
    pass 

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

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

Wow, gut, dass Sie nicht nur versucht haben, dies im Python-Interpreter auszuführen, es könnte Ihren PC total gebraten haben! ;-) – nikow

+0

doh! Ich fühle mich jetzt dumm :) –

+3

Nur eine Anmerkung: Die meisten Leute möchten nach Typen suchen, was sie wirklich tun möchten, ist zu überprüfen, ob die erforderlichen Methoden implementiert sind ... – elzapp

Antwort

22

Es funktioniert genau so, wie man es ...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

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

Wenn Sie von einem bestimmten Basisklasse abgeleitet, wenn eine Instanz einer Klasse wissen wollen, zu arbeiten erwarten würde, Sie nutzen könnten :

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