isinstance(object, classinfo)
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.
- object: Objeto a evaluar.
- classinfo: Nombre de clase, tupla de nombres de clases o estructura recursiva de tuplas conteniendo nombres de clases.
La función isinstance devuelve un booleano.
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