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

Eckhard Lehmann elehmann at e-lehmann.de
Sun Apr 27 19:38:42 EDT 2003


Hallo Liste,

ich beiß mir schon seit paar Stunden die Zähne an folgendem Problem aus:

Ich habe zwei Klassen: LinearModel und DataSet. LinearModel existiert im 
Modul rinterface.py, DataSet im Modul xdata.py.
So, jetzt will ich in einem Programm ein DataSet Objekt erzeugen, sagen 
wir "ds = DataSet(...)"
Irgendwann später (ds existiert noch) will ich ein LinearModel erzeugen, 
und zwar enthält dieses ein Attribut vom Typ DataSet - also z.B.
"lm = LinearModel(ds)". Jetzt will ich dem DataSet bekannt machen, dass 
es zu _dem_ LinearModel gehört, das ich damit erzeugt habe. Sprich, 
LinearModel.__init__ sieht etwa so aus:

def __init__(self, dset):
         if not (isinstance(dset, xdata.DataSet)):
             raise ValueError, "dset must be a DataSet"
         ...
         self.DataSet = dset
         self.DataSet.setLinearModel(self)
         ...

in rinterface.py mache ich natürlich ein "import xdata" am Anfang
Entsprechend enthält DataSet eine methode setLinearModel(), die etwa so 
aussieht:

def setLinearModel(self, lm):
     if isinstance(lm, rinterface.LinearModel): self.LModel = lm
     else: raise AttributeError, "lm must be a LinearModel"

In xdata.py mach ich ein "import rinterface" am Anfang.

Jetzt hab ich folgendes kleine Script:

from xdata import DataSet
from rinterface import LinearModel
ds = DataSet(..)
print ds.__class__                   # xdata.DataSet
lm = LinearModel(ds)

In dem Moment, wo lm erzeugt wird, kommt der ValueError, den ich 
"raise", wenn das Argument für LinearModel.__init__() kein DataSet 
Objekt ist (raise ValueError, "dset must be a DataSet"). Aber ds ist ein 
DataSet... und DataSet ist ansonsten im Programm auch bekannt...
Was läuft hier schief, kann mir jemand helfen? Hab schon alles mögliche 
angestellt und jede Menge über Namespaces Klassen usw. in Python 
nachgelesen - ohne Erfolg :-/

Dankbar für jeden Tipp...

Ecky ;)






More information about the Python-de mailing list