Python: Problem mit überladenen Konstruktoren

7

ACHTUNG: Ich habe Python seit 10 Minuten gelernt, also entschuldige mich für irgendwelche dummen Fragen!

Ich habe den folgenden Code geschrieben, jedoch bekomme ich die folgende Ausnahme:

  

Nachrichtendatei   Name Zeilenposition Traceback-Knoten            31   exceptions.TypeError: Dieser Konstruktor benötigt keine Argumente

%Vor%

Irgendwelche Gedanken?

    
TK. 23.11.2008, 16:41
quelle

8 Antworten

36

Ich gehe davon aus, dass Sie von einem Java-ish-Hintergrund kommen, daher gibt es einige wichtige Unterschiede, auf die Sie hinweisen sollten.

%Vor%     
Paul Fisher 20.07.2011, 21:42
quelle
5

Konstruktoren in Python heißen __init__ . Sie müssen auch "self" als erstes Argument für alle Methoden in Ihrer Klasse verwenden und das verwenden, um Instanzvariablen in der Klasse zu setzen.

%Vor%     
truppo 23.11.2008 16:44
quelle
4

Kumpel, hol dir ein Pythonbuch. Eintauchen in Python ist ziemlich gut.

    
Ankur Gupta 23.11.2008 17:31
quelle
2

Zunächst einmal hier .

    
ayaz 23.11.2008 16:46
quelle
2

Es gibt eine Reihe von Dingen, auf die Sie hinweisen sollten:

  1. Alle Instanzmethoden in Python haben ein explizites Selbstargument.
  2. Konstruktoren heißen __init__ .
  3. Sie können Methoden nicht überladen. Sie können einen ähnlichen Effekt erzielen, indem Sie Standardmethodenargumente verwenden.

C ++:

%Vor%

Python:

%Vor%     
Pramod 23.11.2008 16:48
quelle
1

Das ist kein gültiges Python.

Der Konstruktor für eine Python-Klasse ist def __init__(self, ...): und Sie können ihn nicht überladen.

Sie können Standardwerte für die Argumente verwenden, z. B.

%Vor%     
Brian C. Lane 23.11.2008 16:46
quelle
1

Ah, das sind häufige Probleme für neue Python-Entwickler.

Zuerst sollte der Konstruktor aufgerufen werden:

%Vor%

Ihr zweites Problem ist das Vergessen, den Selbstparameter in Ihre Klassenmethoden aufzunehmen.

Wenn Sie den zweiten Konstruktor definieren, ersetzen Sie außerdem die Definition der Computer () -Methode. Python ist extrem dynamisch und lässt Sie fröhlich Klassenmethoden neu definieren.

Der pythischere Weg ist wahrscheinlich, Standardwerte für die Parameter zu verwenden, wenn Sie sie nicht benötigen.

    
Dana 23.11.2008 16:49
quelle
1

Python unterstützt das Überladen von Funktionen nicht.

    
Eden 13.01.2009 16:11
quelle