Contenido del Curso
Programación Orientada a Objetos en Python a Fondo
Programación Orientada a Objetos en Python a Fondo
repr 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:
class User: def __init__(self, username): self.username = username instance = User("top.user.123") print(instance)
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".
class User: def __init__(self, username): self.username = username def __repr__(self): return f"User: {self.username}" instance = User("top.user.123") print(instance)
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.
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)
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.
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)
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.
¡Gracias por tus comentarios!