多重继承和super

问题描述

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

我有一个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,sexo)
        self.__matricula = matricula
        self.__semestre = semestre
        self.__curso = curso


class Professor(Pessoa):

    __lista_de_indicacoes = []

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

class ProfessorAuxiliar(Professor,Aluno):

    def __init__(self,materia,curso)

...

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

解决方法

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

,

我认为这是正确的方法。

class ProfessorAuxiliar(Professor,Aluno): 

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