Python ERROR: TypeError: … missing 1 required positional argument:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | class Estudante: def __init__(self,nome,numero_estudante): self.nome=nome self.numero_estudante=numero_estudante self.cadeiras = [] def enrol (self, curso_decorrer): self.cadeiras.append(curso_decorrer) curso_decorrer.add_estudante(self) class Departamento: def __init__(self,nome, codigo_departamento, local): self.nome=nome self.codigo_departamento = codigo_departamento self.local= local self.cursos = [] def add_curso(self,descricao,codigo_curso, creditos,departamento): self.cursos[codigo_curso] = Curso(self,descricao,codigo_curso, creditos,departamento) return self.cursos[codigo_curso] class Curso: def __init__(self,descricao,codigo_curso, creditos,departamento): self.descricao = descricao self.codigo_curso= codigo_curso self.creditos=creditos self.departamento=departamento self.departamento.add_curso(self) self.decorridos =[] def adicionar_ano(self,ano): self.decorridos.append(Cursodecorrer(self,ano)) return self.decorridos[-1] class Cursodecorrer: def __init__(self,curso,ano): self.curso = curso self.ano = ano self.estudantes =[] def adicionar_estudante(self,estudante): self.estudantes.append(estudante) Engenharia=Departamento("Departamento de Engenharia","001","Azurém") Matemática=Departamento("Departamento de Matemática","002","Braga") MIEBIOM=Departamento.add_curso("Engenharia Biomédica",'001-1',"55","Engenharia") MIEBIOL=Departamento.add_curso("Engenharia Biológica",'001-2',"55","Engenharia") MAT=Departamento.add_curso("Matemática",'002-1',"30") MIEBIOM_2017=Curso.adicionar_ano("2017") A74000=Estudante("Pedro Miguel","74000") |
Code error: MIEBIOM=Departamento.add_curso("Engenharia
Biomédica",'001-1',"55","Engenharia")**
1 | TypeError: add_curso() missing 1 required positional argument: 'departamento' |
我什么都试过了,有人知道怎么了吗?
直接在类上调用方法,您应该只使用类方法。您应该首先创建一个Departamento的实例,在该实例上可以调用实例方法addCurso。
下面是这样一个代码的例子,您首先创建一个departamento,然后在其中添加一个curso,我想这就是您想要做的:
1 2 | dep = Departamento("name","codigo dep","local") dep.add_curso("Engenharia Biomédica",'001-1',"55","Engenharia") |
您可以看到它是一个实例方法,因为方法定义中的第一个参数是self(这是一个约定)。
关于类方法与实例方法的更多信息:类和实例方法之间的区别
您的
1 | def add_curso(self,descricao,codigo_curso, creditos,departamento): |
但当您在此行中调用它时,只传递4个值:
1 | MIEBIOM=Departamento.add_curso("Engenharia Biomédica",'001-1',"55","Engenharia") |
所以python是这样解释的:
1 2 3 4 5 | self ="Engenharia Biomedica" descricao ="001-1" codigo_curso ="55" creditos ="Engenharia" departamento = !!Missing Value!! |
希望这有帮助。