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

2024-09-29 23:15:40 发布

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

我正在尝试在我的类中创建一个名为feedback的新方法。它应该包含一个名为grade和self的参数。当我运行程序时,它会显示一个异常:premission()缺少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或更低,它应该返回安心方法的结果


Tags: 方法nameself程序youformat参数return
3条回答

下面是一个完整的类,与您的代码最为相似:

class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def praise(self):
        return f"You inspire me, {self.name}."

    def reassurance(self):
        return f"Chin up, {self.name}. You'll get it next time!"

    def feedback(self):
        if self.grade > 50:
            return Student.praise(self)
        else:
            return Student.reassurance(self)

Bob = Student('Bob', 60)
Jen = Student('Jen', 40)
print(Bob.feedback())
print(Jen.feedback())

> You inspire me, Bob.
> Chin up, Jen. You'll get it next time!

或者,正如其他人所说,使用self.premission()和self.resurance()而不是Student.premission(self)或Student.resurance(self)

调用Student.praise()时,它是一个未绑定的方法,因此self没有定义。这是您缺少的必需位置参数。 您可以将其称为unbound并传递self(不是首选):

Student.praise(self)

或者(首选),将其作为绑定方法调用:

self.praise()

要调用实例方法(以self作为第一个隐式参数的方法),您必须实际地在实例上调用它。这里,Student是类的类型,而不是实例。实例是self,隐式传递

解决方案:

if self.name and grade > 50:
    return self.praise()
else:
    return self.reassurance()

相关问题 更多 >

    热门问题