import order or cross import
Roland Hedberg
roland.hedberg at adm.umu.se
Wed Jan 3 03:29:01 EST 2007
More information about the Python-list mailing list
Wed Jan 3 03:29:01 EST 2007
- Previous message (by thread): import order or cross import
- Next message (by thread): import order or cross import
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi!
I'm having a bit of a problem with import.
I'm writing a marshalling system that based on a specification will
create one or more files containing mostly class definitions.
If there are more than one file created (and there are reasons for
creating more than one file in some instances) then they will import
each other since there may be or is interdependencies in between them.
And this is where the going gets tough.
Let's assume I have the following files:
------------- ONE.py --------------------
import TWO
class Car:
def __init__(self):
self.color = None
def set_color(self,v):
if isinstance(v,TWO.Black) or isinstance(v,TWO.White):
self.color = v
class BaseColor:
def __init__(self):
pass
def __str__(self):
return self.color
if __name__ == "__main__":
car = Car()
color = TWO.Black()
car.set_color(color)
print car.color
-------------- TWO.py -------------------
import ONE
class Black(ONE.BaseColor):
color = "Black"
def __init__(self):
ONE.BaseColor.__init__(self)
class White(ONE.BaseColor):
color = "White"
def __init__(self):
ONE.BaseColor.__init__(self)
-----------------------------------------
Now, running ONE.py causes no problem it will print "Black", but running
TWO.py I get:
AttributeError: 'module' object has no attribute 'BaseColor'
So, how can this be solved if it can be ?
To join ONE.py and TWO.py into one file could be a solution if there
where no other conditions (non-language based) that prevented it.
-- Roland
- Previous message (by thread): import order or cross import
- Next message (by thread): import order or cross import
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list