¿Qué es issubclass() y cómo usarlo en Python?

| Última modificación: 13 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

La herencia entre clases es uno de los temás más complejos de entender en los inicios de programación con Python y en general con cualquier lenguaje. En aras de facilitarte la vida en este aspecto, el día de hoy te vamos a contar qué es issubclass(), una función que te permite comprobar si una clase es subclase de otra.

issubclass() en python

¿Qué es issubclass()?

Issubclass() es una función perteneciente a python que puede verificar si una clase, o un grupo de clases, es subclase de otra. Esta permite validar relaciones de herencia entre clases sin tener que realizar comprobaciones manuales. Si la clase que estás comprobando es una subclase, la función devolverá true; si no lo es, devolverá false. Veamos su sintaxis:

issubclass(object, classinfo)

Los parámetros de esta clase son:

  • object: La clase que deseas comprobar.
  • classinfo: Una clase (o una tupla de clases) que será el referente para verificar la herencia.

Un ejemplo de este fenómeno en issubclass() podría ser:

class Padre:
    pass

class Hijo(Padre):
    pass

print(issubclass(Hijo, Padre))  # Devuelve True
print(issubclass(Padre, Hijo))  # Devuelve False

¿Cómo usar issubclass() en Python?

La mejor manera de entender algo es por medio de ejemplos. Para este ejemplo queremos que imagines que estás desarrollando una aplicación y esta tiene una jerarquía de clases en la que pretendes manejar diferentes tipos de usuarios. Si quieres asegurarte que las clases derivadas respeten la estructura base, estos son los pasos a seguir con issubclass():

Supongamos que estás desarrollando una aplicación y tienes una jerarquía de clases para manejar diferentes tipos de usuarios. Quieres asegurarte de que las clases derivadas respetan la estructura base. Aquí es donde entra en acción issubclass.

class Usuario:
pass

class Admin(Usuario):
pass

class Invitado:
pass

print(issubclass(Admin, Usuario)) # True
print(issubclass(Invitado, Usuario)) # False

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Con issubclass () puedes comprobar rápidamente si Admin es una subclase de Usuario y evitar errores en tiempo de ejecución.

Otros modo de uso

Hay otras maneras de usar issubclass(), veamos cuáles son:

  • Verificación múltiple con tuplas: si requieres la comprobación de una clase, si pertenece a varias clases base, puedes usar una tupla como segundo parámetro en issubclass():
class Mamifero:
pass

class Ave:
pass

class Murcielago(Mamifero, Ave):
pass

print(issubclass(Murcielago, (Mamifero, Ave))) # True

Este enfoque es útil en sistemas complejos donde las clases pueden tener múltiples padres.

  • Comparación con isinstance: Si bien issubclass() se parece a isinstance, ambas cumplen funciones distintas, ya que, mientras que issubclass() trabaja con clases, isinstance verifica si una instancia pertenece a una clase específica:
class Vehiculo:
pass

class Coche(Vehiculo):
pass

mi_coche = Coche()
print(isinstance(mi_coche, Vehiculo)) # True
print(issubclass(type(mi_coche), Vehiculo)) # True

¿Cuándo no usar issubclass()?

No siempre es necesario usar issubclass. Por ejemplo, si trabajas con objetos concretos en lugar de clases, es preferible utilizar isinstance. También debes evitarlo si el diseño de tu aplicación no depende de jerarquías estrictas de herencia.

¿Qué errores se pueden cometer al usar issubclass()?

  1. Probar objetos en lugar de clases: Recuerda que issubclass solo funciona con clases. Si intentas pasar un objeto, obtendrás un error de tipo.
   mi_coche = Coche()
   print(issubclass(mi_coche, Vehiculo))  # TypeError
  1. Olvidar manejar excepciones: Asegúrate de que los parámetros pasados sean válidos. Si no estás seguro, puedes usar un bloque try-except.

Si quieres seguir aprendiendo sobre temáticas relacionadas con python y otros lenguajes de programación, no dudes en inscribirte al bootcamp de programación inicial que tenemos en Keepcoding preparado para ti. En él aprenderás desde las bases hasta trucos avanzados que te permitirán empezar tu camino en el mundo de la programación y sobresalir en el sector laboral para conseguir los mejores empleos a futuro. No pierdas más tiempo: transforma tu vida y construye un futuro sólido con nuestra ayuda. ¡Tu momento de brillar es ahora!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos