Seite 1 von 1
Klassen
Verfasst: Mittwoch 31. August 2005, 10:53
von Gast
Hallo, ich bin gerade am Python lernen und ausprobieren komm aber nicht bei den Klassen nicht weiter. Hier ist eine Test-Klasse, die ich in der Dater abc.py abgelegt habe:
Code: Alles auswählen
class abc:
def __init (self, title=""):
self.title = title
def prt ():
print self.title
Als nächstes hab ich im Shell-Fenster die Datei importiert, was auch klappt.
Aber wenn ich dann eine Instanz haben will kommt folgender fehler:
TypeError: 'module' object is not callable
Fehlt noch irgendwas in der Klassendefinition?
Danke
Verfasst: Mittwoch 31. August 2005, 11:06
von tom123
Ja da fehlt was am Construktor:
def __init__ (self, title=""):
Verfasst: Mittwoch 31. August 2005, 11:11
von Gast
Hmpf, stimmt ich habs korrigiert und erhalte jetzt diesen Fehler:
NameError: name 'abc' is not defined
Verfasst: Mittwoch 31. August 2005, 11:14
von jens
Da ist auch noch mehrere Fehler:
Code: Alles auswählen
class abc:
def __init__( self, title="" ):
self.title = title
def prt( self ):
print self.title
foo = abc( "test1" ) # Instanz erzeugen
foo.prt() # Funktion aufrufen
Verfasst: Mittwoch 31. August 2005, 11:26
von Gast
Du hast recht da fehlt auch noch ein self, aber ich kann die Klasse immer noch nicht instanzieren. Wenn ich die Klasse direkt in die Shell eingebe funktioniert es, aber nicht wenn ich es in einer Datei abgelegt habe.
Verfasst: Mittwoch 31. August 2005, 11:32
von querdenker
Hallo Gast!
Wie wäre es mal mit folgendem:
Zeig doch mal, was du eingibst und was du dann von Python als Fehler zurückgegeben bekommst
Dann können wir dir vielleicht auch helfen.
mfg, querdenker
Verfasst: Mittwoch 31. August 2005, 11:37
von Gast
Hab ich oben geschrieben, ich importiere und versuche dann zu instanzieren:
>>> import abc
>>> x = abc()
Traceback (most recent call last):
File "<pyshell#17>", line 1, in -toplevel-
x = abc()
TypeError: 'module' object is not callable
Verfasst: Mittwoch 31. August 2005, 11:47
von henning
Ist ganz logisch:
Du
importierst ja das
Modul abc (also wahrscheinlich die Datei abc.py). In diesem Modul könnten ja aber auch noch andere Sachen sein, als die
Klasse, welche auch abc heisst.
Mit kürzeren Worten:
Wenn du von dem Modul abc nur die Klasse abc und nichts weiter importieren willst, kannst du es z.B. auch so machen:
Verfasst: Mittwoch 31. August 2005, 12:00
von jens
Verfasst: Freitag 2. September 2005, 09:23
von Gast
Danke für die Hilfe.