我正在尝试在班级中创建一个名为feedback的新方法。它应该带有一个名为grade以及self的参数。当我运行程序时,它显示异常:claim()缺少1个必需的位置参数:'self'
我尝试在反馈方法中放入两个参数。
def praise(self):
if self.name:
return "You inspire me, {}".format(self.name)
def reassurance(self):
if self.name:
return "Chin up, {}. You'll get it next time!".format(self.name)
def feedback(self, grade):
if self.name and grade > 50:
return Student.praise()
else:
return Student.reassurance()
如果等级高于50,则应返回称赞方法的结果。如果它是50或小于50,则应返回保证方法的结果。
答案 0 :(得分:0)
要调用实例方法(以self
作为第一个隐式参数),必须在实例上实际调用它。在这里,Student
是类的类型,而不是实例。实例为self
,它被隐式传递。
解决方案:
if self.name and grade > 50:
return self.praise()
else:
return self.reassurance()
答案 1 :(得分:0)
当调用Student.praise()
时,它是 unbound 方法,因此未定义self
。这是您缺少的必需位置参数。
您可以将其称为未绑定并传递self
(不推荐):
Student.praise(self)
或者(首选),只需将其作为绑定方法调用即可:
self.praise()
答案 2 :(得分:0)
这是一堂完整的课,与您的代码最相似:
useInterval
或者,就像其他人所说的,使用self.praise()和self.reassurance()代替Student.praise(self)或Student.reassurance(self)。