2009-11-03 6 views
8

Dato un oggetto, come faccio a sapere se si tratta di una classe e di una sottoclasse di una determinata classe Foo?Qual è l'equivalente di issubclass di isinstance in python?

ad es.

class Bar(Foo): 
    pass 

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

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

Wow, buona cosa non hai provato a eseguire questo nell'interprete Python, potrebbe aver completamente fritto il tuo PC! ;-) – nikow

+0

doh! Mi sento sciocco ora :) –

+3

Solo una nota: la maggior parte delle volte le persone vogliono controllare i tipi, quello che vogliono fare è verificare se sono stati implementati i metodi richiesti ... – elzapp

risposta

22

Funziona esattamente come ci si aspetta che funzioni ...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

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

Se vuoi sapere se un esempio di una classe derivata da una determinata classe di base, è possibile utilizzare :

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