为了账号安全,请及时绑定邮箱和手机立即绑定

关于继承,报错 ''__init__'' missing 1 required positional argument"score"(__init__缺少1个必需的位置参数score)

我把教学的代码复制回来,改成Student继承 Person的 name, gende,Teacher继承Student的name, gende。运行后就如题报错了。然后在Teacher那里多加了score,就能运行了。这算什么?只能继承全部,然后覆写或变私有?

class Person(object):

    def __init__(self, name, gender):

        self.name = name

        self.gender = gender


class Student(Person):

    def __init__(self, name, gender, score):

        super(Student, self).__init__(name, gender)

        self.score = score


class Teacher(Student):

    def __init__(self, name, gender, course):

        super(Teacher, self).__init__(name, gender)   #此处报错

        self.course = course


p = Person('Tim', 'Male')

s = Student('Bob', 'Male', 88)

t = Teacher('Alice', 'Female', 'English')     #和此处报错


正在回答

3 回答

我的天哪,完全继承就有点不太灵活


0 回复 有任何疑惑可以回复我~

class Teacher(Student):
    def __init__(self, name, gender, score, course):
        super(Teacher, self).__init__(name, gender,score)
        self.course = course

t2 = Teacher('Bob', 'boy', 88, 'Math')

print('tname:', t2.name)
print('tgender', t2.gender)
print('tscore',t2.score)
print('tcourse',t2.course)

0 回复 有任何疑惑可以回复我~

你用teacher 继承了student,且缺少score参数,所以出错,改为继承person即可

1 回复 有任何疑惑可以回复我~
#1

慕侠6748888 提问者

我本意就是想用teacher 继承student的,试试多重继承!那真正的多重继承应该怎么搞呢?
2020-10-24 回复 有任何疑惑可以回复我~
#2

慕粉15235479823 回复 慕侠6748888 提问者

Teacher 继承 Student 时,__init__()括号中需要写被继承类的全部参数, super(Teacher, self).__init__(name, gender)报错是因为缺少了Student的score参数; t = Teacher('Alice', 'Female', 'English') Teacher继承Student的三个参数后又定义了course参数,共4个参数,这个地方少了一个参数
2020-12-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于继承,报错 ''__init__'' missing 1 required positional argument"score"(__init__缺少1个必需的位置参数score)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信