AttributeError: 'dict' object has no attribute '____'
AttributeError: 'dict' object has no attribute '____'
我已经弄乱这段代码几个小时了,它仍然给我错误。我想做一个 'automark' 测试,在其中介绍好答案和坏答案,然后计算最终分数。
代码:
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'
不能直接调用实例方法:必须先实例化class:
p = puntuacion(something, something_else)
p.calculo()
calculo()
方法不接受任何参数:第一个参数 self
是隐式的,对应于 class 实例。你不及格。
您还应该从 __init__
中删除 input()
函数;你已经将 aciertos
和 errores
作为参数传递了,通常你不想在 class 的初始化中做 "complicated" 的事情(比如用户交互):
...
def __init__(self, aciertos, errores):
self.aciertos = aciertos
self.errores = errores
...
然后:
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()
我已经弄乱这段代码几个小时了,它仍然给我错误。我想做一个 'automark' 测试,在其中介绍好答案和坏答案,然后计算最终分数。
代码:
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'
不能直接调用实例方法:必须先实例化class:
p = puntuacion(something, something_else)
p.calculo()
calculo()
方法不接受任何参数:第一个参数 self
是隐式的,对应于 class 实例。你不及格。
您还应该从 __init__
中删除 input()
函数;你已经将 aciertos
和 errores
作为参数传递了,通常你不想在 class 的初始化中做 "complicated" 的事情(比如用户交互):
...
def __init__(self, aciertos, errores):
self.aciertos = aciertos
self.errores = errores
...
然后:
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()