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.
Gast

Klassen

Beitragvon Gast » Mittwoch 31. August 2005, 10:53

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

Beitragvon tom123 » Mittwoch 31. August 2005, 11:06

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

Beitragvon Gast » Mittwoch 31. August 2005, 11:11

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

Beitragvon jens » Mittwoch 31. August 2005, 11:14

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Beitragvon Gast » Mittwoch 31. August 2005, 11:26

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

Beitragvon querdenker » Mittwoch 31. August 2005, 11:32

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

Beitragvon Gast » Mittwoch 31. August 2005, 11:37

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

Beitragvon henning » Mittwoch 31. August 2005, 11:47

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 31. August 2005, 12:00

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Beitragvon Gast » Freitag 2. September 2005, 09:23

:idea: Danke für die Hilfe.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]