Klasse definieren und parameter übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Ein Frage für Anfänger.

Ich habe eine Klasse paramInterpreter definiert und hatte angenommen ich kann gleich bei der Instanzierung Parameter mitgeben. Wenn ich diese Parameter wie bei der Funktionendefinition dazu schreibe, nimmt Python an ich möchte eine Ableitung von anderen Klassen machen.

Kann man nun Parameter bei der Instanzierung übergeben oder nicht?

Hier ein paar Zeilen Code:

Code: Alles auswählen

class paramInterpreter(variablen, maxWert, paramDatei):
    self.n = variablen
    self.m = maxWert
    self.source = paramDatein
und die zu erwartende Fehlermeldung:

class paramInterpreter(variablen, maxWert, paramDatei): NameError: name 'variablen' is not defined

Grüße,
4bit.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du kannst bei einer Klasse keine Parameter angeben, so wie du sie verwenden möchtest. In den Klammern übergibst du die Basisklassen der neuen Klasse.

Du suchst wahrscheinlich das hier:

Code: Alles auswählen

class ParameterInterpreter(object):
    def __init__(variablen, maxWert, paramDatei):
        self.n = variablen
        self.m = maxWert
        self.source = paramDatein
Du hast im Tutorial aber bestimmt den Abschnitt über Klassen gelesen, oder? ;-)
Das Leben ist wie ein Tennisball.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Steht alles in der Doku, du suchst __init__.

Ich würde dir wirklich raten das mal durchzuarbeiten, ``self.n = variablen`` wird dir nämlich auch eine Fehlermeldung bescheren (self ist nämlich an der Stelle nicht definiert). EyDu hat self in der __init__-Funktion auch vergessen, schreib das einfach als ersten Parameter hin, dann klappt das Beispiel. Warum das so ist steht übrigens auch in dem schon genannten Doku-Artikel.
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

ok, läuft.

In diesem Fall möchte ich eine Klasse benutzen, die in einem Modul definiert wird:

Code: Alles auswählen

import cool_tranistions

tran = cool_transitions.paramInterpreter(1,2,"drei")
Das letzte Statement wird aber wahrscheinlich als Versuch interpretiert eine Funktion aufzurufen:

AttributeError: 'module' object has no attribute 'paramInterpreter'


Ohne Modul Namen gibts einen "globaler Name nicht bekannt" Fehler.
Wie mach ich das richtig?

Danke und Grüße,
4bit.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du solltest der Fehlermeldung schon glauben! In "cool_transitions" gibt es nichts was "paramInterpreter" heißt. Vielleicht hast du es falsch geschrieben, oder du benutzt Idle und hast das Modul nicht neu geladen, oder ...
Das Leben ist wie ein Tennisball.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

4bit hat geschrieben:Wie mach ich das richtig?
i und s tauschen.
4bit
User
Beiträge: 113
Registriert: Dienstag 5. Mai 2009, 11:27

Danke, ihr habt beide recht.
Arbeite mit IDLE und hatte den reload vergessen.

danke,
4bit.
Antworten