关于类:python错误:typeerror:…缺少1个必需的位置参数TypeError: … missing 1 required positional argument:

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(这是一个约定)。

关于类方法与实例方法的更多信息:类和实例方法之间的区别


您的add_curso函数需要5个值

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!!

希望这有帮助。