Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
repr y str | Métodos Mágicos
Programación Orientada a Objetos en Python a Fondo
course content

Contenido del Curso

Programación Orientada a Objetos en Python a Fondo

Programación Orientada a Objetos en Python a Fondo

1. Conceptos de POO
2. Herencia
3. Encapsulamiento
4. Polimorfismo y Abstracción
5. Métodos Mágicos

bookrepr y str

Exploremos algunos de los métodos mágicos más útiles.

Ya estamos familiarizados con el método mágico __init__, que hemos considerado anteriormente. Sin embargo, hay muchos otros métodos mágicos que pueden ser increíblemente útiles. En esta sección, nos centraremos en dos de ellos: __repr__ y __str__.

Representación de la clase

Cuando creas una instancia de tu clase e intentas imprimirla en la consola, puedes encontrarte con una representación que puede no ser muy informativa o fácil de usar:

1234567
class User: def __init__(self, username): self.username = username instance = User("top.user.123") print(instance)
copy

Para obtener una salida más comprensible e informativa al imprimir una instancia, puede definir el método mágico __repr__, que significa "representación".

12345678910
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" instance = User("top.user.123") print(instance)
copy

El código proporcionado define una clase llamada User. La clase User incluye un método mágico __repr__, que devuelve una representación de cadena del objeto. En este caso, el método __repr__ devuelve una cadena formateada que incluye el nombre de la clase "Usuario" y el valor del atributo username.

Cuando se ejecuta la sentencia print, se llama al método __repr__ del objeto instance para obtener una representación en cadena del objeto. En este caso, el método __repr__ se sobrescribe en la clase User para proporcionar una representación personalizada.

Representación de cadenas

El método mágico __str__ funciona de forma similar a __repr__, pero se utiliza específicamente para proporcionar información y una representación más legible de un objeto a los usuarios.

12345678910111213
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" def __str__(self): return f"This is a user {self.username}" instance = User("top.user.123") print(instance)
copy

La función print() busca el método mágico __str__ en un objeto para obtener una representación de cadena. Si el método __str__ no está definido, vuelve a utilizar el método __repr__.

Además, el método mágico __str__ se puede utilizar para convertir una instancia a un tipo de cadena explícitamente. Implementando el método __str__, puedes definir cómo el objeto debe ser representado como una cadena.

1234567891011121314
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" def __str__(self): return f"{self.username}" instance = User("top.user.123") string = str(instance) + " is the best user!" print(string)
copy

Nota

En resumen, los métodos mágicos __str__ y __repr__ se utilizan para definir diferentes representaciones de cadenas de objetos en Python. El método __str__ se utiliza normalmente para proporcionar una salida amigable, presentando el objeto de una manera que sea fácil de entender para los usuarios. Por otro lado, el método __repr__ se utiliza para proporcionar una salida amigable para el desarrollador, que normalmente contiene información más detallada sobre el objeto para depuración y uso interno.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 2
some-alt