es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamando Atributos de una Clase dentro de un Método de Clase, Error de Código

Soy nuevo en las clases en cualquier lenguaje de programación, sin embargo, actualmente estoy tratando de crear un programa que calcula la posición tributaria de un usuario basado en entradas.

El problema que tengo es que cuando llamo a los atributos en el método def get_threshold, las cifras no se suman. He declarado la entrada como int, pero parece que se genera una lista cuando ejecuto el método y los números no se suman.

¿Alguien puede explicar amablemente qué he hecho mal?

La idea será que la clase contenga todos los detalles de ingresos y contribuciones de pensiones del usuario, calcule la posición tributaria y el programa pueda imprimir información tributaria relevante.

He escrito el código sin usar clases, sin embargo, me gustaría moverlo a una clase para poder solicitar información para clientes adicionales si es necesario.

class Cliente:

    def __init__(self, nombre, salario, bono, intdiv, porcionespension, aportelumpsum):
        self.nombre = nombre
        self.salario = salario
        self.bono = bono
        self.intdiv = intdiv
        self.porcionespension = porcionespension / 100
        self.aportelumpsum = aportelumpsum

    @classmethod
    def from_input(cls):
        return cls(input('nombre'), int(input('salario')), int(input('bono')), int(input('ingrese intereses y dividendos para el año')),
                   int(input('ingrese las contribuciones al plan de pensiones en el lugar de trabajo como %')), int(input('ingrese el total de aportes en sumas globales'))
                   )

    def get_threshold(self):

        totalbruto = (self.salario + self.bono + self.intdiv, self.aportelumpsum)
        print(totalbruto)


c = Cliente.from_input()

c.get_threshold()

El código retorna:
nombre50000
salario5
bono5
ingrese intereses y dividendos para el año5
ingrese las contribuciones al plan de pensiones en el lugar de trabajo como %5
ingrese el total de aportes en sumas globales0
(15, 0)

Proceso finalizado con el código de salida 0

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la línea totalgross = (self.salary + self.bonus + self.intdiv, self.pensionlump). La coma después de self.intdiv crea una tupla en lugar de sumar los valores juntos.

    Para solucionar este problema, elimina la coma y reemplázala por un signo + de esta manera: totalgross = self.salary + self.bonus + self.intdiv + self.pensionlump.

    Esto debería sumar todos los valores juntos y devolver el resultado correcto.

Comments are closed.