AttributeError:'dict'对象没有属性''

2024-10-06 12:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经花了几个小时在这段代码上了,它仍然会给我错误。我想做一个'自动标记'的测试,在那里你介绍好的和坏的答案,它计算最后的分数。在

代码:

class puntuacion:
    def __init__(self, aciertos, errores):
        self.aciertos = int(input("Introduce el numero de aciertos"))
        if self.aciertos > 40:
            print("Numero maximo de aciertos: 40")
            exit()
        self.errores = int(input("Introduce el numero de errores: "))

    def calculo(self):
        totalac = self.aciertos * 0.25
        print(totalac)
        while self.errores > 3:
            totalerr += -0.25
            self.errores - 3
        print'Nota final: ', totalac-totalerr
calculo({})

错误:

  C:\Users\Admin>python C:\Users\Admin\Documents\python\test2.py
Traceback (most recent call last):
  File "C:\Users\Admin\Documents\python\test2.py", line 1, in <module>
    class puntuacion:
  File "C:\Users\Admin\Documents\python\test2.py", line 17, in puntuacion
    calculo({})
  File "C:\Users\Admin\Documents\python\test2.py", line 10, in calculo
    totalac = self.aciertos * 0.25
AttributeError: 'dict' object has no attribute 'aciertos'

Tags: pyselfadminlinedeusersdocumentsfile
1条回答
网友
1楼 · 发布于 2024-10-06 12:32:34

不能直接调用实例方法:必须先实例化类:

p = puntuacion(something, something_else)
p.calculo()

calculo()方法不接受任何参数:第一个参数self是隐式的,与类实例相对应。你不及格。在


您还应该从__init__中删除input()函数;您已经将aciertos和{}作为参数传递,通常您不想在类的初始化中执行“复杂”的工作(如用户交互):

^{2}$

然后:

aciertos = int(input("Introduce el numero de aciertos"))
if aciertos > 40:
    sys.exit("Numero maximo de aciertos: 40")
errores = int(input("Introduce el numero de errores: "))

p = puntuacion(aciertos, errores)
p.calculo()

相关问题 更多 >