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:

Code: Alles auswählen

import abc
x = abc.abc()
Wenn du von dem Modul abc nur die Klasse abc und nichts weiter importieren willst, kannst du es z.B. auch so machen:

Code: Alles auswählen

from abc import abc
x = abc()

Verfasst: Mittwoch 31. August 2005, 12:00
von jens
Dazu gibt es auch was im Wiki: http://www.pythonwiki.de/ModulImporte

Verfasst: Freitag 2. September 2005, 09:23
von Gast
:idea: Danke für die Hilfe.