Introspección de objetos en Python

En este tutorial, nos adentraremos en la introspección de objetos en Python, una herramienta clave para cualquier programador que busque entender y manipular mejor las capacidades de los objetos dentro de este lenguaje.

¿Por qué es indispensable la introspección? La introspección en Python nos facilita explorar las características internas de un objeto, permitiéndonos inspeccionar o modificar su estado, atributos y tipo. Es decir, nos brinda el acceso necesario para comprender la esencia de un objeto y las funcionalidades que ofrece.

Python pone a nuestra disposición un conjunto robusto de herramientas de introspección. Exploraremos algunas de ellas:

  • type()
    Esta función nos permite identificar el tipo de un objeto. Por ejemplo, puede diferenciar si un objeto es una lista, un diccionario, un entero, una cadena, entre otros.

    Ejemplo. Crea una lista:

    >>> var = [1,2,3,4]

    Después, verifica el tipo de dato de la variable var con la función type()

    >>> type(var)

    La función type devuelve el tipo de dato, que en este caso es una lista.

    <class 'list'>

  • dir()
    Esta función nos ofrece un listado de atributos y métodos asociados al objeto, brindándonos una visión clara de las funciones que el objeto puede ejecutar.

    Ejemplo. Crea una lista:

    >>> var = [1,2,3,4]

    Luego, consulta la lista de propiedades y métodos accesibles desde un objeto del tipo "lista" mediante la función dir()

    >>> dir(var)

    La función dir() muestra la lista de propiedades y métodos disponibles.

    ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', ... etc.

  • id()
    Esta función genera un identificador único para el objeto dentro del entorno de Python, lo cual es especialmente útil para determinar si dos referencias apuntan al mismo objeto.

    Ejemplo. Crea una tupla:

    >>> var = (1,2,3,4)

    Acto seguido, muestra el identificador único del objeto con la función id()

    >>> id(var)

    La función id() devuelve la referencia del objeto en la memoria del computador.

    140492943321280

  • getattr(), setattr(), y delattr()
    Estas funciones nos permiten, respectivamente, obtener, asignar o eliminar los atributos de un objeto.
  • hasattr()
    Esta herramienta verifica la existencia de un atributo específico en un objeto, retornando un valor booleano: True si el atributo está presente, y False en caso contrario.

    Ejemplo. Crea una tupla:

    >>> var = (1,2,3,4)

    A continuación, comprueba la presencia del atributo 'real' con la función hasattr().

    hasattr(var,'real')

    La función devuelve False, ya que las tuplas no disponen del atributo 'real'.

    False

  • in()
    Esta función determina si una palabra clave específica se encuentra dentro de un objeto.
    Ejemplo. Crea una cadena en la variable var:

    >>> var = "Python"

    Luego, verifica si la subcadena "th" se encuentra en "Python" utilizando la función in().

    >>> "th" in var

    La función devuelve True, confirmado que la subcadena "th" forma parte de "Python".

    True

  • is()
    Esta función examina si dos objetos comparten la misma referencia o identidad en memoria.
    Ejemplo. Crea dos listas:

    >>> lista1 = [1,2,3]
    >>> lista2 = [1,2,3]

    Después, verifica si ambos objetos tienen la misma referencia de memoria con el operador is.

    >>> lista1 is lista2

    La operación devuelve False, ya que aunque las listas son idénticas, se almacenan en direcciones de memoria distintas.

    False

  • isinstance()
    Esta función resulta útil para confirmar si un objeto es instancia de una clase específica o de uno de sus subtipos.
  • issubclass()
    Esta herramienta comprueba si una clase es subclase de otra.

Contar con estas herramientas de introspección puede significar un cambio radical al sumergirse en el código Python, ofreciendo claridad y control sobre los objetos con los que trabajamos.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Tutorial Python

FAQ