Función isinstance() de Python
Funciones integradas de Python3
isinstance()Es una función integrada de Python que se utiliza para comprobar si un objeto es una instancia del tipo especificado (o de cualquier tipo en una tupla de tipos).
isinstance()Es la función de comprobación de tipos más utilizada en Python; no solo verifica el tipo exacto, sino que también tiene en cuenta la herencia (una subclase también es una instancia de la clase padre).
Glosario: isinstance 是 is an instance(是一个实例)的缩写。
Sintaxis básica y parámetros
Formato de sintaxis
isinstance(object, classinfo)
Descripción de parámetros
- Parámetro object:
- Tipo: cualquier objeto
- Descripción: el objeto a comprobar.
- Parámetro classinfo:
- Tipo: tipo, tupla de tipos o clase base abstracta
- Descripción: el tipo a comprobar. Puede ser un único tipo o una tupla de tipos.
Descripción de la función
- Valor de retorno: Devuelve un valor booleano
TrueoFalse。 - Característica: Si object es una instancia de una subclase de classinfo, también devuelve True.
Ejemplos
Ejemplo 1: Uso básico
Ejemplo
# Comprobar tipos básicos
print(isinstance(123, int)) # Salida: True
print(isinstance(3.14, float)) # Salida: True
print(isinstance("hello", str)) # Salida: True
print(isinstance([1, 2], list)) # Salida: True
print(isinstance({"a": 1}, dict)) # Salida: True
# Comprobar None
print(isinstance(None, type(None))) # Salida: True
# Comprobar booleanos (nota: bool es una subclase de int)
print(isinstance(True, bool)) # Salida: True
print(isinstance(True, int)) # Salida: True (porque bool hereda de int)
print(isinstance(123, int)) # Salida: True
print(isinstance(3.14, float)) # Salida: True
print(isinstance("hello", str)) # Salida: True
print(isinstance([1, 2], list)) # Salida: True
print(isinstance({"a": 1}, dict)) # Salida: True
# Comprobar None
print(isinstance(None, type(None))) # Salida: True
# Comprobar booleanos (nota: bool es una subclase de int)
print(isinstance(True, bool)) # Salida: True
print(isinstance(True, int)) # Salida: True (porque bool hereda de int)
Resultado esperado:
True True True True True True True True
Análisis del código:
- Puede comprobar varios tipos básicos.
- bool es una subclase de int, por lo que True/False también son instancias de int.
Ejemplo 2: Uso de tuplas de tipos
Ejemplo
# Comprobar varios tipos (usando tuplas)
value = 42
print(isinstance(value, (int, float))) # Salida: True
print(isinstance(value, (str, list))) # Salida: False
# Comprobar una mezcla de tipos
value = "hello"
print(isinstance(value, (int, str, bytes))) # Salida: True
# Usado para evaluación de condiciones
def process_data(data):
if isinstance(data, (list, tuple)):
return sum(data)
elif isinstance(data, (int, float)):
return data * 2
else:
return str(data)
print(process_data([1, 2, 3])) # Salida: 6
print(process_data((1, 2, 3))) # Salida: 6
print(process_data(10)) # Salida: 20
print(process_data(3.14)) # Salida: 6.28
print(process_data("hello")) # Salida: hello
value = 42
print(isinstance(value, (int, float))) # Salida: True
print(isinstance(value, (str, list))) # Salida: False
# Comprobar una mezcla de tipos
value = "hello"
print(isinstance(value, (int, str, bytes))) # Salida: True
# Usado para evaluación de condiciones
def process_data(data):
if isinstance(data, (list, tuple)):
return sum(data)
elif isinstance(data, (int, float)):
return data * 2
else:
return str(data)
print(process_data([1, 2, 3])) # Salida: 6
print(process_data((1, 2, 3))) # Salida: 6
print(process_data(10)) # Salida: 20
print(process_data(3.14)) # Salida: 6.28
print(process_data("hello")) # Salida: hello
Resultado esperado:
True False True 6 6 20 6.28 hello
Análisis del código:
- El segundo parámetro puede ser una tupla de tipos, para comprobar varios tipos a la vez.
- Esto es muy conveniente al trabajar con varios tipos de datos.
Ejemplo 3: Con herencia de clases
Ejemplo
# Ejemplo de herencia de clases
class Animal:
pass
class Dog(Animal):
pass
class Cat(Animal):
pass
# Crear una instancia
dog = Dog()
cat = Cat()
animal = Animal()
# isinstance tiene en cuenta la relación de herencia
print(isinstance(dog, Dog)) # Salida: True
print(isinstance(dog, Animal)) # Salida: True (una instancia de subclase también es instancia de la clase padre)
print(isinstance(dog, Cat)) # Salida: False
print(isinstance(cat, Animal)) # Salida: True
print(isinstance(animal, Dog)) # Salida: False
class Animal:
pass
class Dog(Animal):
pass
class Cat(Animal):
pass
# Crear una instancia
dog = Dog()
cat = Cat()
animal = Animal()
# isinstance tiene en cuenta la relación de herencia
print(isinstance(dog, Dog)) # Salida: True
print(isinstance(dog, Animal)) # Salida: True (una instancia de subclase también es instancia de la clase padre)
print(isinstance(dog, Cat)) # Salida: False
print(isinstance(cat, Animal)) # Salida: True
print(isinstance(animal, Dog)) # Salida: False
Resultado esperado:
True True False True False
isinstance()Comprueba la cadena de herencia, por lo que una instancia de subclase también pertenece a la clase padre.
Funciones integradas de Python3
Otras extensiones