如何在python类方法中使用两个参数

时间:2019-07-19 00:41:24

标签: python class methods

我正在尝试在班级中创建一个名为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,则应返回保证方法的结果。

3 个答案:

答案 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)。