Herencia: issubclass()
Python ofrece una función que es capaz de identificar una relación entre dos clases, y aunque su diagnóstico no es complejo, puede verificar si una clase particular es una subclase de cualquier otra clase.
Así es como se ve:
issubclass(ClaseUno, ClaseDos)
La función devuelve True si ClaseUno
es una subclase de ClaseDos
, y False de lo contrario.
Vamos a verlo en acción, puede sorprenderte. Mira el código en el editor. Léelo cuidadosamente.
Hay dos bucles anidados. Su propósito es verificar todos los pares de clases ordenadas posibles y que imprima los resultados de la verificación para determinar si el par coincide con la relación subclase-superclase.
Ejecuta el código. El programa produce el siguiente resultado:
True False False
True True False
True True True
Hagamos que el resultado sea más legible:
↓ es una subclase de → | Vehiculo | VehiculoTerrestre | VehiculoOruga |
---|---|---|---|
Vehiculo | True | False | False |
VehiculoTerrestre | True | True | False |
VehiculoOruga | True | True | True |
Existe una observación importante que hacer: cada clase se considera una subclase de sí misma.
Code
class Vehiculo:pass
class VehiculoTerrestre(Vehiculo):
pass
class VehiculoOruga(VehiculoTerrestre):
pass
for cls1 in [Vehiculo, VehiculoTerrestre, VehiculoOruga]:
for cls2 in [Vehiculo, VehiculoTerrestre, VehiculoOruga]:
print(issubclass(cls1, cls2), end="\t")
print()