[Python-de] Anfaengerfragen

Gerson Kurz Gerson.Kurz at t-online.de
Sat Apr 19 08:33:28 EDT 2003


Jetzt kommt es raus, ich habe gar keine Ahnung :)

Ich schreibe an einem recht gro?en Python-Projekt, und mochte die
Quelldateien hierarchisch organisieren, da man sonst den Uberblick verliert.
Ich habe bisher Verzeichnisse der Form

PyEMU
PyEMU\tranport
PyEMU\protocol
PyEMU\protocol\HLC
PyEMU\protocol\BBA
...

Sie sind als Module organisiert (d.h. enthalten ein __init__.py). Nimm das
Modul transport: es enthalt eine Factory, und verschiedene Realisierungen
(Sockets, V24, ActiveX, Dateibasiert). Eigentlich mochte ich folgendes
machen:

import transport

session = transport.factory.createInstance(config)

(d.h. weder "from transport import " noch "from transport import *").

Frage 1) Warum mu? factory in __init__.py definiert sein? Weil es halt so
ist, ok, aber mich wurde die Begrundung fur diese Entscheidung
interessieren.

Frage 2) Ich schreibe also ein "import factory" in __init__.py. Ich habe
eine gesonderte Quelldatei factory.py, die eine Klasse factory definiert.
Damit ich meine (wie ich denke recht lesbare Syntax) benutzen kann, mu? ich
in __init__.py jetzt schreiben:

import factory
# die klasse = das modul.die klasse
factory = factory.factory

(oder from factory import factory)

Gibt es vielleicht einen Trick, den ich nicht kenne, wie man Quelldateien in
einem module-Verzeichnis heraus als Klassen ansprechen kann? Ich habe z.B.
Sachen wie

SocketsClientConnectionThread.py
SerialTransportSession.py

und habe elend lange und aus meiner Sicht eher redundante Konstrukte wie

session = SerialTransportSession.SerialTransportSession(...)

Das sieht einfach Scheisse aus! Idealerweise dergestalt, da?, ahnlich wie in
Java (und ja, ich habe auch lange daruber geflucht aber ich kann jetzt den
Vorteil darin sehen) der Quelldateiname den Namen der extern sichtbaren
Klasse definiert, interne Funktionen hingegen nicht exportiert werden?

Frage 3) Gibt es eigentlich ein Projekt, Design Patterns exemplarisch in
Python vorzustellen? Weil wir davon reden: Ich lese zur Zeit (7 Jahre nach
dem Ende meines Studiums = 7 Jahre volligen Desinteresses meinerseits an
solchen Buchern) ein paar Bucher zu Themen wie Extreme Programming,
Refactoring, Design Patterns etc. Wie ist den eure Einschatzung der
diesbezuglichen Entwicklungen?

Frage 4) Gibt es ein doxygen Aquivalent fur Python? Und nein, pydoc reicht
nicht aus. (Doxygen zeichnet z.B. prima Abhangigkeitsdiagramme, und erzeugt
CHM files etc.)








More information about the Python-de mailing list