多重继承和super()

时间:2020-08-14 08:44:28

标签: python class oop inheritance superclass

我是一个初学者,这个疑问吸引了我...

我有一个类ProfessorAuxiliar,它继承了类ProfessorAluno的属性。 但是当使用super()时,它将返回TypeError: __init __ () takes 7 positional arguments but 10 were given

...

class Aluno(Pessoa):

    def __init__(self, nome, sobrenome, cpf, data, sexo, matricula, semestre, curso):
        super().__init__(nome, sobrenome, cpf, data, sexo)
        self.__matricula = matricula
        self.__semestre = semestre
        self.__curso = curso


class Professor(Pessoa):

    __lista_de_indicacoes = []

    def __init__(self, nome, sobrenome, cpf, data, sexo, materia):
        super().__init__(nome, sobrenome, cpf, data, sexo)
        self.__materia = materia

class ProfessorAuxiliar(Professor, Aluno):

    def __init__(self, nome, sobrenome, cpf, data, sexo, materia, matricula, semestre, curso):
        super().__init__(nome, sobrenome, cpf, data, sexo, materia, matricula, semestre, curso)

...

如何使ProfessorAuxiliar类继承其他2个类的所有属性?

2 个答案:

答案 0 :(得分:0)

尝试对每个继承的类使用super而不是parent_classname.__init__(),并将这些args相应地传递给那些父类的构造函数。 编辑:在ProfessorAuxiliar类中

答案 1 :(得分:0)

我认为这是正确的方法。

class ProfessorAuxiliar(Professor, Aluno): 

    def __init__(self, nome, sobrenome, cpf, data, sexo, materia, matricula, semestre, curso):
        Professor.__init__(self,self, nome, sobrenome, cpf, data, sexo, matricula, semestre, curso)
        Aluno.__init__(self,nome, sobrenome, cpf, data, sexo)