
Hallo. Versuche mich gerade mit Klassen in Python vertraut zu machen, doch begegnet mir eine Sache, die mich einfach wundert... Folgendes Snippet # anfang _mod_importDic.py class ConvertFile: def __init__(self, file): self.file = file usw def Count(self): print "aha" usw # ende _mod_importDic.py # _run_importDic.py +++++++++++++++++++++ DAS FUNKTIONIERT from _mod_importDic import * myConverter = ConvertFile print dir(myConverter) +++++++++++++++++++++ DAS FUNKTIONIERT NICHT, WESHALB?? from _mod_importDic import * myConverter = ConvertFile() print dir(myConverter) Ich dachte eine Klasseninstanz wird immer Instanz = Klasse() erzeugt. Gruesse Robert _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de

robert schneider wrote:
Hallo.
Versuche mich gerade mit Klassen in Python vertraut zu machen, doch begegnet mir eine Sache, die mich einfach wundert...
Folgendes Snippet
# anfang _mod_importDic.py class ConvertFile: def __init__(self, file):
^^^^ ^^^^ a b
myConverter = ConvertFile( )
^^^^^^^^^ ^^ a b?
Ich dachte eine Klasseninstanz wird immer Instanz = Klasse() erzeugt.
Das ist auch richtig so. Voraussetzung ist allerdings, dass bei der Erzeugung der Instanz alle vom Konstruktor __init__() erwarteten Parameter mitgeliefert werden. Das erste Argument (self) wird automagisch von der Instanz selber beigesteuert, alle weiteren (in deinem Fall "file") müssen im Aufruf enthalten sein. Noch ein stilistischer Nachtrag: Es wird nicht empfohlen, eigene Modulnamen mit Unterstrichen zu beginnen. Es ist Konvention, Erweiterungsmodule in C, auf welche nur ueber einen Wrapper in Python zugegriffen wird, so zu benennen. Ein Beispiel ist z.B. das Standard-Modul socket, welches intern auf das Erweiterungsmodul _socket zurueckgreift. -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
participants (2)
-
Georg Mischler
-
robert schneider