Función isinstance() de Python

Python3 内置函数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 booleanoTrueoFalse。
  • 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)

Resultado esperado:

True
True
True
True
True
True
True
True

Análisis del código:

  1. Puede comprobar varios tipos básicos.
  2. 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

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

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.


Python3 内置函数Funciones integradas de Python3


Otras extensiones