Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Dudas con clases en python.
#1
Hola, ¿cómo están?
Es mi primer programa de práctica con la poo y me surgen 2 dudas, la primera, es coherente la creación del objeto dentro del bucle, no logro crearlo antes del mismo, por más que le pase los parámetros me da error y lo segundo ¿ qué debo cambiar para mejorarlo y aprender ?. -
Tengo claro que debo validar que los ingresos sean correctos, pero lo hice de esa manera para que sea más fácil para Uds. ayudarme. 

Código:
#23/04/2018 mi primer programa con clases

class calculos():
    def __init__(self, oprUno, oprDos):
         self.oprUno = oprUno
         self.oprDos = oprDos

    def suma(self):
         return float(self.oprUno) + float(self.oprDos)

    def resta(self):
         return float(self.oprUno) - float(self.oprDos)

    def divide(self):
         return float(self.oprUno) / float(self.oprDos)

    def multiplica(self):
         return float(self.oprUno) * float(self.oprDos)

    def modulo(self):
         return int(self.oprUno) % int(self.oprDos)


Código:
from calculos import*

while True:
    oprUno = input('\n Ingrese primer  operando...: ')
    oprDos = input('\n Ingrese segundo operando...: ')

    opc = input('\n 1 - Suma \n 2 - Resta \n 3 - Divide'
                '\n 4 - Multiplica \n 5 - Módulo'
                '\n\n Ingrese opción....:')

    calc = calculos(oprUno, oprDos)

    if opc == '1':
         print(f'\n {oprUno} + {oprDos} = {calc.suma()}')
    elif opc == '2':
         print(f'\n {oprUno} - {oprDos} = {calc.resta()}')
    elif opc == '3':
         print(f'\n {oprUno} / {oprDos} = {calc.divide()}')
    elif opc == '4':
         print(f'\n {oprUno} * {oprDos} = {calc.multiplica()}')
    elif opc == '5':
         print(f'\n {oprUno} % {oprDos} = {calc.modulo()}')

    opc = input('\n 1 - Continua \n 2 - Finaliza'
                '\n\n Ingrese opción...:')
    if opc != '1':
         break

Desde ya muchas gracias por el tiempo que le dediquen. 
Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#2
Hola Daniel. Tu código está correcto. Para mejorar podrías chequear estas cuestiones:
  • Las clases por convención se nombran con el estilo CamelCase. Por ende debería llamarse Calculos.
  • No son necesarios los paréntesis luego de la definición de la clase si no especificas ninguna clase padre.
  • Ya que solo estás importando un objeto, es mejor que en lugar de emplear un asterisco utilices from calculos import Calculos.
En cuanto a la creación de la instancia dentro del bucle, no hay problema. Pero si quisieras crear el objeto primero, podrías hacer:

  1. calc = Calculos(None, None)
  2.  
  3. while True:
  4.     # (...)
  5.     calc.oprUno = oprUno
  6.     calc.oprDos = oprDos


Aunque insisto en que tu solución es más adecuada para el caso.

Saludos!
Responder
#3
Ok. Francisco, ya tome nota de lo que propones.

Saludos
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)