isinstance

Nombre completo
isinstance
Descripción

La función isinstance recibe como argumentos un objeto y una clase y devuelve True si el objeto es una instancia de dicha clase o de una subclase de ella.

El segundo argumento (la clase) puede ser también una tupla de clases o una estructura recursiva de tuplas de clases en cuyo caso se devolverá True si el objeto pertenece a alguna de las clases contenidas en la estructura.

Sintaxis

isinstance(object, classinfo)

Parámetros
  • object: objeto a evaluar
  • classinfo: nombre de clase, tupla de nombres de clases o estructura recursiva de tuplas conteniendo nombres de clases.
Resultado

La función isinstance devuelve un booleano.

Ejemplos

Podemos comprobar si el número entero 5 pertenece a la clase int con el siguiente código:

isinstance(5, int)

True

Si pasásemos como segundo argumento el nombre de la clase str (cadenas de texto), la función devuelve False:

isinstance(5, str)

False

El argumento classinfo puede ser una tupla de nombres de clases, devolviéndose True si el objeto analizado pertenece a alguna de ellas:

isinstance(5, (int, str))

True

isinstance(5, (bool, str))

False

También puede ser una estructura recursiva de tuplas:

isinstance(5, ((int, str), (float, bool)))

True

isinstance(5, ((complex, str), (float, bool)))

False

Podemos probar la función con una clase personalizada:

class circulo:
    def __init__(self, radio):
        self.radio = radio

c = circulo(3)

isinstance(c, circulo)

True

Si el objeto es una instancia de una subclase de la clase indicada, la función también devuelve True. Por ejemplo, creemos una subclase de la clase circulo:

class circulo_coloreado(circulo):
    def __init__(self, radio, color):
        super().__init__(radio)
        self.color = color

c_azul = circulo_coloreado(5, "azul")

La variable c_azul es una instancia de la subclase recién creada, por lo que pasar la variable y el nombre de la subclase a la función isinstance devuelve el booleano True:

isinstance(c_azul, circulo_coloreado)

True

Pero pasar a la función el nombre de la variable y la clase padre también devuelve True:

isinstance(c_azul, circulo)

True

Enviado por admin el Mié, 13/01/2021 - 15:24