Foros Python

Versión completa: Dudas (varias) con la POO en python.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola Francisco, hola a todos, ¿ cómo están?, bien como lo dice el enunciado
tengo varias dudas con el código que expongo a continuación.-
No tengo errores, pero como estoy en un inicio del estudio de la POO lo
que necesito es que me digan que debo modificar o que estoy haciendo
mal o innecesario.-

Código:
class Productos:
    def __init__(self, codigo, nombre, precio):
        self.codigo = codigo
        self.nombre = nombre
        self.precio = precio

    def grabar(self, codigo, nombre, precio, lista):
        final = f"{codigo}, {nombre}, {precio}"
        lista.append(final)

    def ingreso(self):
        lisProducto = []
        fin = True

        while fin:
            codigo = input("Código..........: ")
            nombre = input("Descripcion.....: ")
            precio = input("Precio..........: ")
       
            self.grabar(codigo, nombre, precio, lisProducto)

            siNo = input('"Si" para continuar "No" para finalizar...: ')
            if siNo == 'No':
                fin = False
       
        self.imprimir(lisProducto)
 
    def imprimir(self, lista):
        print("\n ======================================= ")
        print("\n Código  Producto               Precio")

def main():
    producto = Productos(codigo=0, nombre="", precio=0.00)
    producto.ingreso()

if __name__ == '__main__':
    main()


Desde ya muchas gracias por el tiempo que le dediquen.-
Slds. Daniel ☕☕☕
Hola, Daniel.

El nombre de la clase generalmente se escribe en singular, Producto, por más que a partir de ella se creen múltiples productos. Creo que lo único que debería estar en la clase de ese código es esto:

Código:
class Productos:
    def __init__(self, codigo, nombre, precio):
        self.codigo = codigo
        self.nombre = nombre
        self.precio = precio

El resto de las operaciones para cargar productos son ajenas a la clase, así que no corresponde que estén dentro de ella como métodos. El método imprimir() estaría bien dentro de la clase si sirviera para imprimir los datos de ese producto en particular (o sea, de la instancia), pero por lo que veo tenías la idea de que sirva para imprimir una lista de productos, por lo cual debería estar afuera.

Como regla general, en POO siempre es mejor tener muchas clases con poco código, cada una con su respectiva tarea, que una sola clase con mucho código. Acá me parece que habría que diferenciar entre la definición del producto en sí (esto sería la clase) y la carga de ese producto (esto no es necesario que sea una clase).

Saludos