class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
¿Existe alguna alternativa a type() que pueda verificar si un objeto hereda de una clase?obtener tipo de clase base en python
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
¿Existe alguna alternativa a type() que pueda verificar si un objeto hereda de una clase?obtener tipo de clase base en python
Sí, isinstance: isinstance(obj, Klass)
>>> class a:
... pass
...
>>> class b(a):
... pass
...
>>> c = b()
>>> d = a()
>>> type(c) == type(d)
True
tipo() devuelve un objeto de tipo. a es la clase real, no el tipo
¡Su respuesta parece estar en contradicción con lo que dice el OP en su pregunta! Estoy empezando a ir hacia el control de tipos, por lo que estoy interesado en cualquier comentario. ¿Estás seguro de que tipo (c) == tipo (d)? –
tanto 'tipo (c)' como 'tipo (d)' devuelven un tipo 'instancia de clase ', por lo que deben ser iguales. Creo que deberíamos usar 'isinstance' aquí. Puede confirmar esto creando 'class x: pass' y' z = x() ', no hay herencia entre' class x' y 'class a', pero todavía encontrará' type (z) == type (c) 'devuelve verdadero. – smwikipedia
Lo anterior es para Python 2.7.8. En Python 3.4.1, el 'tipo (c)' y 'tipo (d)' devolverá 'clase 'tipo'', lo que también dará lugar al resultado' Verdadero '. Pero no dice 'c' y' d' son del mismo tipo. – smwikipedia