Tengo una función que acepta una clase (no una instancia) y, dependiendo de si es una clase específica o una subclase de esa, necesito pasarla en una de las otras dos funciones de fábrica (de terceros).Cómo saber si una clase desciende de otra clase
(Para anticipar las posibles objeciones, soy consciente de que esto no es muy Pythonic, pero estoy depende de lo que acepta la biblioteca de terceros.)
issubclass
sólo funciona para las instancias, los objetos mismos no clase. Supongo que podría crear una instancia de la clase, haga issubclass
y deseche la instancia, pero eso parece un desperdicio.
Esto es lo que estoy haciendo en este momento, confiando en el atributo incorporado mro para decir si una cierta clase está en la lista de antepasados de mi clase. ¿Es esto seguro y hay alguna forma mejor de hacerlo?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)
Aargh, que se confundiéndolo con isinstance. Gracias. –