Klassen

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
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
tom123

Ja da fehlt was am Construktor:
def __init__ (self, title=""):
Gast

Hmpf, stimmt ich habs korrigiert und erhalte jetzt diesen Fehler:
NameError: name 'abc' is not defined
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

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
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
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

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()
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dazu gibt es auch was im Wiki: http://www.pythonwiki.de/ModulImporte

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten