2009-11-03 18 views
8

Dado un objeto, ¿cómo puedo saber si se trata de una clase y una subclase de una clase determinada Foo?¿Cuál es el equivalente de issubclass de instancia en python?

p. Ej.

class Bar(Foo): 
    pass 

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

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

Guau, bueno, no solo trataste de ejecutar esto en el intérprete de Python, ¡podría haber frito totalmente tu PC! ;-) – nikow

+0

doh! ahora me siento tonto :) –

+3

Solo una nota: la mayoría de las veces las personas quieren verificar los tipos, lo que realmente quieren hacer es verificar si se implementan los métodos necesarios ... – elzapp

Respuesta

22

Funciona exactamente como sería de esperar que funcione ...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

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

Si desea saber si un instancia de una clase derivada de una clase base dada, podría utilizar :

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