Seite 1 von 1
Noob-Question: Problem beim Erstellen einer Klasse
Verfasst: Montag 2. Juli 2007, 09:09
von McRib
Ich habe in einer Datei D diverse Klassen definiert. Alle Klassen erwarten irgendwelche Parameter also
Code: Alles auswählen
# Datei D
class c1( a, b ):
def myfunc():
pass
class c2( a, b,c ):
def myfunc():
pass
wenn ich die Datei importiere, bekomme ich einen NameError, das bei c1 a und b nicht definiert sind:
Re: Noob-Question: Problem beim Erstellen einer Klasse
Verfasst: Montag 2. Juli 2007, 09:26
von EnTeQuAk
McRib hat geschrieben:Ich habe in einer Datei D diverse Klassen definiert. Alle Klassen erwarten irgendwelche Parameter also
Code: Alles auswählen
# Datei D
class c1( a, b ):
def myfunc():
pass
class c2( a, b,c ):
def myfunc():
pass
wenn ich die Datei importiere, bekomme ich einen NameError, das bei c1 a und b nicht definiert sind:
Klassen != Funktionen.
Wenn du der Klasse 'c1' Die Parameter 'a' und 'b' übergeben möchtest, müsste dessen Formulierung so lauten:
Code: Alles auswählen
class c1(object):
def __init__(self, a, b):
self.a = a
self.b = b
Dann kannst du innerhalb der Klasse auf die Parameter 'self.a' und 'self.b' zugreifen.
Dort, wo du deine vermeintlichen Parameter reingeschrieben hast, also in den Kopf der Klasse, kommen Abhängigkeiten/Klasse, von denen deine Klasse 'c1' erbt. Du bekommst den NameError, weil Python vergeblich nach den Klassen 'a' und 'b' sucht, von denen 'c1' erben könnte.
Verständlich

Ich würde mich da auch beschweren *g*
Aber so, wie ich das sehe, solltest du dir eventuell erstmal ein paar mehr infos zu Objekt Orientierter Programmierung holen:
http://abop-german.berlios.de/read/oops.html
Und eventuell auch
Objekt Orientierte Programmierung mit Python @ShowMeDo
MfG EnTeQuAk
Verfasst: Montag 2. Juli 2007, 11:06
von McRib
Fuer einen Java-Entwickler ist die Notation, wie ich sie hatte voellig klar ...

Vielen Dank fuer die schnelle Antwort.
Verfasst: Montag 2. Juli 2007, 11:11
von BlackJack
Auch bei Java würden an der Stelle nach einem ``extends`` die Namen der Basisklassen folgen und den Konstruktor würde man im Körper der Klassendefinition extra schreiben.