¿Qué es vars() cómo funciona en Python?

| Última modificación: 5 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si programas con Python o con cualquier otro lenguaje, es normal que te encuentres constantemente con inconvenientes sobre cómo realizar algo, cómo escribir algún fragmento de código o cómo solucionar algún problema. Si te ha pasado que necesitas acceder a los atributos de un objeto, pero no sabes cómo hacerlo, hoy queremos que conozcas la función vars(), la cual te ayudará a obtener un mejor acceso a los atributos. Veamos qué es y cómo funciona.

vars() en Python

¿Qué es vars() en Python?

La vars es una de las funciones de Python que devuelve el atributo __dict__ de un objeto. Este es un atributo que funciona como un diccionario y contiene todos los atributos que se pueden modificar de ese objeto. Es decir, el vars() hace posible que se acceda a los atributos de un objeto en forma de un diccionario clave-valor, en donde las claves son los nombres de los atirubutos y los valores son sus respectivos contenidos.

La sintaxis para la estructura de vars es la siguiente:

vars(object)
  • object: Puede ser cualquier objeto que tenga el atributo __dict__. Esto incluye clases, instancias de clases y algunos otros objetos.

En el momento en que llamamos vars con un objeto como argumento, este devuelve el contenido de su atributo __dict__ y es esto lo que te proporciona una representación clara de los atributos del objeto.

¿Cómo funciona vars()?

Si quieres entender mejor cómo son las dinámicas de vars, miremos algunos ejemplos en diferentes contextos:

  • Ejemplo con una clase: Imagina que tienes una clase llamada Persona y quieres obtener sus atributos:
class Persona:
nombre = "Juan"
edad = 36
pais = "España"

x = vars(Persona)
print(x)

Salida:

{'nombre': 'Juan', 'edad': 36, 'pais': 'España'}

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Como puedes observar, la función vars() ha devuelto un diccionario con los atributos de la clase Persona. En este caso, los atributos son nombre, edad y pais.

¿Qué pasa si llamo a vars() sin argumentos?

En el caso de que llames a vars() sin haberle pasado algún argumento, lo que hace es devolver el diccionario de símbolos locales. Veamos:

def ejemplo():
a = 10
b = 20
print(vars())

ejemplo()

Salida:

{'a': 10, 'b': 20}

En este ejemplo anterior vars() nos devuelve un diccionario que contiene las variables locales de la función ejemplo().

Instancias de clases: un ejemplo

El vars también puede servirnos para obtener los atributos de una instancia de clase. Veamos cómo se hace:

class Vehiculo:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo

coche = Vehiculo("Toyota", "Corolla")
print(vars(coche))

Salida:

{'marca': 'Toyota', 'modelo': 'Corolla'}

En este ejemplo que te damos, vars(coche) devuelve un diccionario con los atributos marca y modelo de la instancia coche.

¿Qué pasa si el objeto no tiene un atributo dict?

Si alguna vez intentas usar vars() con un objeto que no tiene atributo __dict__ (como por ejemplo tipso de datos primitivos, ya sea un número o una cadena), te va a mostrar un error del tipo:

print(vars(123))  # Esto generará un TypeError

Salida:

TypeError: vars() argument must have __dict__ attribute

Esto se debe a que los números, cadenas y otros tipos de datos primitivos no tienen un atributo __dict__.

¿En qué contextos NO deberías usar vars()?

Vars(), pese a ser muy útil, no siempre va a ser la opción más adecuada. Los casos en los que no conviene usarlo son cuando hay:

  1. Objetos sin __dict__: Como vimos antes, no todos los objetos tienen un atributo __dict__. Si necesitas trabajar con objetos que no lo tienen, como los tipos primitivos, vars() no será adecuado.
  2. Acceso no seguro: vars() te da acceso directo a los atributos de un objeto, esto puede ser riesgoso si no estás seguro de la estructura del objeto o si deseas proteger ciertos atributos de modificaciones accidentales.

Si quieres iniciarte en el mundo de la programación ,tenemos el bootcamp perfecto para ti. Se trata del bootcamp de programación inicial en el que aprenderás conceptos teóricos y podrás aplicarlos en entornos simulados avanzados o inclusive en la vida real por medio de elaboración de distintos proyectos. ¡No dudes más, es tu momento para cambiar tu vida y convertirte en un experto en tecnología!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.