2017-09-29 14 views
-2
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")**PythonのERROR:TypeError例外:... 1つの必要な位置引数不足している:私はすべてを試み

TypeError: add_curso() missing 1 required positional argument: 'departamento' 

を、誰もが間違っている知っていますか?

+0

'MAT = Departamento.add_curso( "Matemática"、 '002から1'、 "30")'と思われます。 – RagingRoosevelt

+0

[TypeError:必要な1つの位置指定引数が見つからない: 'self'](https://stackoverflow.com/questions/17534345/typeerror-missing-1-required-positional-argument-self) – wwii

+0

ようこそ。時間をかけて[ask]とそれに含まれるリンクを読んでください。 – wwii

答えて

1

あなたadd_curso機能は、5つの値

def add_curso(self,descricao,codigo_curso, creditos,departamento): 

が必要ですが、あなたは、この行でそれを呼び出しているときにのみ、4つの値を渡しています

MIEBIOM=Departamento.add_curso("Engenharia Biomédica",'001-1',"55","Engenharia") 

だから、Pythonはこのようにそれを解釈します

self = "Engenharia Biomedica" 
descricao = "001-1" 
codigo_curso = "55" 
creditos = "Engenharia" 
departamento = !!Missing Value!! 

希望します。

1

クラスで直接メソッドを呼び出す場合は、クラスメソッドでのみ行う必要があります。最初にDepartamentoのインスタンスを作成し、インスタンスメソッドadd_cursoを呼び出すことができます。

dep = Departamento("name", "codigo dep", "local") 
dep.add_curso("Engenharia Biomédica",'001-1',"55","Engenharia") 

あなたはそれがインスタンスメソッドで見ることができます:ここで

は、私はあなたが何をしたいかと思いますが、最初Departamentoを作成し、それにcursoを追加し、このようなコードの例ですメソッド定義の最初の引数は自己であるため(これは規約です)。インスタンスメソッドVSクラスのメソッドについて

より:それは引数が不足しているようDifference between Class and Instance methods

+0

私はすでにそれをしましたか? 付: 'Engenharia = Departamento( "DepartamentoデEngenharia"、 "001"、 "Azurém")' 'MIEBIOM = Departamento.add_curso( "Engenharia BIOMEDICA"、 '001-1'、 "55"、」 Engenharia ")' –

+0

はい、ただし、変数名 "Engenharia"を使用し、メソッド名を "Departamento"にする必要はありません。 'Engenharia = Departamento(" Dependamento de Engenharia "、" 001 "、"Azurém ") MIEBIOM = Engenharia.add_curso(" EngenhariaBiomédica "、" 001-1 "、" 55 "、" Engenharia ")' –

関連する問題