La función isinstance
1. Qué es isinstance? #
La función isinstance en Python se utiliza para verificar si un objeto es una instancia de una clase específica o de una tupla de clases. Esto es útil cuando quieres asegurarte de que un objeto es del tipo que esperas antes de realizar operaciones sobre él.
2. Cómo funciona isinstance? #
La sintaxis básica de isinstance es:
1isinstance(objeto, clase_o_tupla_de_clases)
objeto: El objeto que quieres verificar.clase_o_tupla_de_clases: La clase o una tupla de clases contra las cuales quieres verificar el objeto.
La función devuelve True si el objeto es una instancia de la clase especificada o de una de las clases en la tupla, y False en caso contrario.
3. Ejemplos de uso de isinstance #
-
Verificar si un número es un entero:
1numero = 10 2es_entero = isinstance(numero, int) 3print(f"¿El número {numero} es un entero? {es_entero}")Salida de consola ¿El número 10 es un entero? True
- ¿Qué hace este código?:
- Define una variable
numerocon el valor10. - Usa
isinstancepara verificar sinumeroes una instancia deint. - Imprime el resultado de la verificación.
- Define una variable
- ¿Qué hace este código?:
-
Verificar si un valor es una cadena de texto:
1texto = "Hola, mundo" 2es_cadena = isinstance(texto, str) 3print(f"¿El valor '{texto}' es una cadena? {es_cadena}")Salida de consola ¿El valor 'Hola, mundo' es una cadena? True
- ¿Qué hace este código?:
- Define una variable
textocon una cadena de texto. - Usa
isinstancepara verificar sitextoes una instancia destr. - Imprime el resultado de la verificación.
- Define una variable
- ¿Qué hace este código?:
-
Verificar si un objeto es una instancia de una clase personalizada:
1class Perro: 2 def __init__(self, nombre): 3 self.nombre = nombre 4 5mi_perro = Perro("Fido") 6es_perro = isinstance(mi_perro, Perro) 7print(f"¿El objeto mi_perro es una instancia de Perro? {es_perro}")Salida de consola ¿El objeto mi_perro es una instancia de Perro? True
- ¿Qué hace este código?:
- Define una clase
Perrocon un atributonombre. - Crea un objeto
mi_perrode la clasePerro. - Usa
isinstancepara verificar simi_perroes una instancia dePerro. - Imprime el resultado de la verificación.
- Define una clase
- ¿Qué hace este código?:
-
Verificar si un valor es una instancia de múltiples tipos (usando una tupla):
1valor = [1, 2, 3] 2es_lista_o_tupla = isinstance(valor, (list, tuple)) 3print(f"¿El valor {valor} es una lista o una tupla? {es_lista_o_tupla}")Salida de consola ¿El valor [1, 2, 3] es una lista o una tupla? True
- ¿Qué hace este código?:
- Define una variable
valorcon una lista. - Usa
isinstancepara verificar sivalores una instancia delistotuple. - Imprime el resultado de la verificación.
- Define una variable
- ¿Qué hace este código?:
4. Por qué usar isinstance? #
- Seguridad: Asegura que tu código está trabajando con el tipo correcto de datos antes de realizar operaciones que podrían fallar si el tipo es incorrecto.
- Flexibilidad: Permite que tus funciones trabajen de manera segura con diferentes tipos de datos, haciendo que tu código sea más robusto.
- Claridad: Facilita la lectura y mantenimiento del código, ya que deja claro qué tipo de objetos se espera manejar.
Resumen del tema
Conceptos clave #
- Comprobación de Instancia con
isinstance(obj, clase_o_tupla): verifica si un objeto es instancia de una clase o de cualquier subclase de su jerarquía. - Soporte de Tuplas de Clases: permite validar pertenencia a múltiples tipos simultáneamente
isinstance(x, (int, float, complex)). - Diferencia vs
type():isinstancerespeta la herencia y el polimorfismo (isinstance(perro, Animal)esTrue), mientras quetype(perro) == AnimalesFalse.
Qué debes recordar #
Usa isinstance(obj, Clases) para verificar tipos respetando la jerarquía de herencia y admitiendo tuplas de clases posibles.