Saltar al contenido

¿Qué son los métodos mágicos __str__, __repr__ y __len__ en Python y para qué sirven?

28/04/2025
¿Qué son los métodos mágicos (str repr len)?
Compartir:
Índice de Contenido

Introducción a los métodos mágicos en Python

En Python, los métodos mágicos (también conocidos como métodos especiales) son funciones con nombres rodeados por doble guión bajo (por ejemplo, __str__, __repr__, __len__). Estos métodos permiten a las clases personalizar el comportamiento de ciertas operaciones o funciones integradas del lenguaje. A lo largo de este artículo exploraremos qué son los métodos mágicos __str__, __repr__ y __len__ en Python, cómo se implementan y para qué sirven.

¿Qué son los métodos mágicos __str__, __repr__ y __len__?

Los métodos __str__, __repr__ y __len__ son funciones especiales que permiten definir el comportamiento de los objetos de una clase cuando son convertidos a cadena de texto o cuando se solicita su longitud.

__str__: Representación legible para humanos

El método __str__ se utiliza para definir la representación en forma de cadena de un objeto, pensada para ser legible por humanos. Es el método que se invoca cuando se llama a str(objeto) o cuando se imprime el objeto con print(objeto).

__repr__: Representación oficial o para desarrolladores

El método __repr__ tiene como objetivo proporcionar una representación oficial del objeto, que idealmente debería ser válida para ser evaluada por Python y así recrear el objeto. Se usa cuando llamamos a repr(objeto) o simplemente al escribir el objeto en una consola interactiva.

__len__: Definir la longitud de un objeto

El método __len__ permite a los objetos personalizados responder a la función len(objeto), devolviendo un valor entero que representa la longitud o el número de elementos que contiene el objeto.

¿Para qué sirven los métodos mágicos __str__, __repr__ y __len__?

Implementar estos métodos mágicos en nuestras clases permite que los objetos:

  • Se muestren de forma clara y comprensible cuando se imprimen o registran.
  • Puedan ser inspeccionados fácilmente durante la depuración o en la consola interactiva.
  • Sean compatibles con funciones integradas de Python, como len().

Cómo implementar los métodos mágicos __str__, __repr__ y __len__ paso a paso

Quizás también te interese:  ¿Qué son *args y **kwargs en Python y cómo usarlos correctamente?

Paso 1: Crear una clase sencilla

Empecemos creando una clase llamada Libro:

class Libro:
    def __init__(self, titulo, autor, paginas):
        self.titulo = titulo
        self.autor = autor
        self.paginas = paginas

Paso 2: Implementar __str__

Ahora, vamos a definir cómo queremos que se muestre el objeto Libro cuando lo imprimimos:

class Libro:
    def __init__(self, titulo, autor, paginas):
        self.titulo = titulo
        self.autor = autor
        self.paginas = paginas

    def __str__(self):
        return f"{self.titulo}" de {self.autor}

Ahora, si creamos un objeto y lo imprimimos:

libro = Libro("Cien años de soledad", "Gabriel García Márquez", 417)
print(libro)  # Salida: "Cien años de soledad" de Gabriel García Márquez

Paso 3: Implementar __repr__

Quizás también te interese:  ¿Cómo ordenar listas en Python con sort() y sorted()? Guía fácil y ejemplos prácticos

El siguiente paso es proporcionar una representación más detallada y técnica:

class Libro:
    def __init__(self, titulo, autor, paginas):
        self.titulo = titulo
        self.autor = autor
        self.paginas = paginas

    def __str__(self):
        return f"{self.titulo}" de {self.autor}

    def __repr__(self):
        return fLibro("{self.titulo}", "{self.autor}", {self.paginas})


Así, si usamos repr(libro) o simplemente escribimos libro en una consola interactiva, veremos:

print(repr(libro))  # Salida: Libro("Cien años de soledad", "Gabriel García Márquez", 417)
Quizás también te interese:  ¿Cómo crear excepciones personalizadas en programación paso a paso?

Paso 4: Implementar __len__

Finalmente, vamos a permitir que nuestro objeto pueda responder a len() devolviendo el número de páginas:

class Libro:
    def __init__(self, titulo, autor, paginas):
        self.titulo = titulo
        self.autor = autor
        self.paginas = paginas

    def __str__(self):
        return f"{self.titulo}" de {self.autor}

    def __repr__(self):
        return fLibro("{self.titulo}", "{self.autor}", {self.paginas})

    def __len__(self):
        return self.paginas

Ahora podemos hacer:

print(len(libro))  # Salida: 417

Resumen y buenas prácticas

  • Usa __str__ para mostrar información legible y amigable para el usuario.
  • Utiliza __repr__ para una representación precisa y útil para depuración o reconstrucción del objeto.
  • Implementa __len__ cuando tu clase tenga una noción de longitud o conteo.

Los métodos mágicos __str__, __repr__ y __len__ en Python hacen que tus clases sean más integradas, útiles y fáciles de usar dentro del ecosistema Python. ¡No dudes en implementarlos para mejorar la calidad de tu código!

Compartir: