[Python-de] Namespaces, Klassen u. Objekte...??

python-lists at duerer-sinclair.de python-lists at duerer-sinclair.de
Mon Apr 28 16:06:23 EDT 2003


On Mon, 28 Apr 2003 elehmann at e-lehmann.de wrote:

[...]

> > a) Dein "Kreuzimport" (a macht import b und b macht import a) ist unschoen
> >    und fuehrt wahrscheinlich zu Deinen Problemen (reine Vermutung)
>
> befürchte ich auch...

[...]

> Aber trotzdem ist das seltsam - obwohl nicht gerade der glücklichste
> Programmierstil und nicht "Python-isch", so müsste es doch trotzdem
> funktionieren, oder?

Hier mein Erklaerungsversuch:

file a.py:
----------------------
print "a pre"
import b
print "a body"
----------------------

file b.py:
----------------------
print "b pre"
import a
print "b body"
----------------------

Jetzt fuehren wir a.py aus und stellen fest, dass der "body" von a
tatsaechlic 2x ausgefuehrt wird.

Meine Vermutung (da musst Du mental a und b durch Deine Filenamen
ersetzen):  Beim ersten Durchlauf von a wird eine Klasse definiert und an
ihren Namen gebunden.  Diese Klasse wird in b dann abgefragt.  Beim 2.
Durchlauf durch a re-definiertst Du die Klasse und bindest die eue Klasse
an den alten Namen.  Dein Kode in a erzeugt dann eine Instanz von der
neuen Klasse und gibt da an die Routine in b.  Die prueft aber auf eine
Instanz der urspruenglichen (der alten) Klasse (denn das ist das
einzige, was waehrend der Defition von b bekannt war) und das ist sie halt
nicht.

Keine Ahnung, ob das tatsaechlich stattfindet, aber es klingt logisch fuer
mich.

Die Antwort auf Deine Frage ist somit: Nein, es sollte icht funktionieren.
Wer verwirrten Kode (Kreuzimporte) schreibt bekommt verwirrendes
Laufzeitverhalten.  :-)

	Holger






More information about the Python-de mailing list