Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El método __str__ se utiliza para devolver una representación de cadena (string) de una instancia
de una clase. Este método se llama cuando se usa la función str() para convertir un objeto en una
cadena de caracteres.
En otras palabras, el método __str__ se emplea para definir cómo se debe imprimir una
instancia de la clase cuando se llama la función str() o cuando se utiliza la interpolación de
cadenas (f-strings).
El método __repr__ se utiliza para devolver una representación de cadena legible de un objeto.
Este método se define dentro de una clase y se llama cuando se usa la función repr() en un objeto de
esa clase.
La representación de cadena devuelta por __repr__() debe ser una cadena que sea suficiente para
recrear el objeto original. Por lo tanto, se espera que el resultado sea una cadena que contenga
información relevante sobre el objeto y sus valores de atributo.
Es importante tener en cuenta que el método __repr__() no es lo mismo que el método
__str__(). El método __str__() devuelve una representación de cadena legible para humanos
del objeto, mientras que el método __repr__() devuelve una representación de cadena que es
suficiente para recrear el objeto.
Ejemplo:
CLASS PERSONA:
DEF __INIT__(SELF, NOMBRE, EDAD):
SELF.NOMBRE = NOMBRE
SELF.EDAD = EDAD
DEF __REPR__(SELF):
RETURN F"PERSONA(NOMBRE='{SELF.NOMBRE}', EDAD={SELF.EDAD})"
Al tener varias superclases, una subclase tiene más oportunidades de reutilizar los
atributos y operaciones heredados de esas superclases.
Mejora el diseño
Permite modelar relaciones de tipo “es un” que se dan en los problemas que se
pretenden resolver.
Añadir una nueva subclase no requiere modificar ninguna otra clase de nuestro
diseño.
Flexibilidad
Las decisiones sobre qué método o función se ejecutará se toman durante la fase
de compilación del programa.
Las decisiones sobre qué método o función se ejecutarán se toman durante la fase
de ejecución del programa
Ejemplos:
Métodos especiales en Python.
class Punto:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"({self.x}, {self.y})"
class A:
def saludar(self):
print("Hola desde A")
class B:
def saludar(self):
print("Hola desde B")
objeto_c = C()
objeto_c.saludar() # Salida: Hola desde A
class Rectangulo:
def __init__(self, largo, ancho):
self.largo = largo
self.ancho = ancho
def area(self):
return self.largo * self.ancho
class Cuadrado(Rectangulo):
def __init__(self, lado):
super().__init__(lado, lado)
rectangulo = Rectangulo(5, 4)
cuadrado = Cuadrado(5)
print(rectangulo.area()) # Salida: 20
print(cuadrado.area()) # Salida: 25
Este programa define una clase Autenticacion que contiene un diccionario de usuarios y
contraseñas. El método autenticar verifica si el usuario y la contraseña proporcionados coinciden
con los almacenados en el diccionario. En la función main, se crea una instancia de Autenticacion y
se solicita al usuario que ingrese su nombre de usuario y contraseña, luego se llama al método
autenticar para verificar las credenciales.
class Autenticacion:
def __init__(self):
self.usuarios = {"usuario1": "contraseña1", "usuario2": "contraseña2"}
def main():
autenticador = Autenticacion()
usuario = input("Ingrese su nombre de usuario: ")
contraseña = input("Ingrese su contraseña: ")
autenticador.autenticar(usuario, contraseña)
if __name__ == "__main__":
main()