Muchas gracias a los dos.
También hay que entender que hay ocasiones en las que soy más alumno que profesor.
Explicar algo es la mejor manera de entenderlo bien. O sea que yo también aprendo según explico las ideas. Incluso aunque me parezcan sencillas, que no son todas.
Si aprendiera el significado de cada uno de los métodos del primer
programa creo que tendría el 80% de la POO aprendido.-
En realidad hay bastante que aprender en la POO, pero el primer programa no tiene tanto como imaginas.
Vamos con un segundo programa.
class Producto:
def __init__(self, codigo, nombre, precio):
self.codigo = codigo
self.nombre = nombre
self.precio = precio
def __str__(self):
return f"{self.codigo}, {self.nombre}, {self.precio:.2f}"
class Productos:
def __init__(self):
self.listado = {}
def append(self, producto):
codigo = producto.codigo
self.listado[producto.codigo] = producto
def __str__(self):
salida = 'Código, Producto, Precio\n'
for codigo in self.listado:
producto = self.listado[codigo]
salida = salida + str(producto) + '\n'
return salida
def main():
producto1 = Producto(15, 'Tomate frito', 3.25)
producto2 = Producto(10, 'Alcachofas', 2.30)
productos_de_comida = Productos()
productos_de_comida.append(producto1)
productos_de_comida.append(producto2)
print(productos_de_comida)
if __name__ == '__main__':
main()
Ahora he añadido una clase más al programa. Si la primera clase (Producto) podía almacenar un solo producto, la nueva clase (Productos) puede almacenar todo un listado de productos.
Tiene un método __init__() que crea la variable donde vamos a almacenar todos los productos.
Otro método append() añade un nuevo producto al listado de productos.
Por último el método __str__() convierte el listado de productos en una cadena de texto para que se pueda representar por pantalla.
El programa main define dos productos (igual que antes)
Después se crea una instancia de la nueva clase "Productos" llamada "productos_de_comida" que va a almacenar los dos productos anteriores.
También podríamos hacer una nueva instancia de la clase "Productos" llamada "productos_de_jardineria" para almacenar otros productos de un departamento diferente.
Por último se imprime la instancia "productos_de_comida" que llamará al método __str__() para convertir los datos en una cadena de texto que se pueda imprimir.
La salida es esta:
Código, Producto, Precio
15, Tomate frito, 3.25
10, Alcachofas, 2.30Imagino que todavía tendrás dudas, pregunta lo que quieras o juega con el programa para ver qué se puede hacer con él.
Saludos.