Hi I'm new to Python, I've read the FAQ but still can't get the following simple example working:
# file main_mod.py: global_string = 'abc' def main(): import auxiliary_mod instance = auxiliary_mod.ClassA() instance.fun() return main() # file auxiliary_mod.py: class ClassA: def fun(self): import main_mod print 'this is ClassA.fun() and global_string is ' + main_mod.global_string return In words, the problem is: I've a main module which defines a global variable and instantiates a class defined in a second module, and a method of that class needs to access the global variable defined in the main module. When I run main_mod.py the method is executed twice: this is ClassA.fun() and global_string is abc this is ClassA.fun() and global_string is abc How can I avoid this problem even in this simple example? If I move the import main_mod statement to the outside of the definion of ClassA I get an exception: Traceback (most recent call last): File "./main_mod.py", line 4, in ? import auxiliary_mod File "/manel/ewt/test/auxiliary_mod.py", line 4, in ? import main_mod File "/manel/ewt/test/main_mod.py", line 13, in ? main() File "/manel/ewt/test/main_mod.py", line 9, in main instance = auxiliary_mod.ClassA() AttributeError: 'module' object has no attribute 'ClassA' As far as I can tell I'm following the technique suggested by Guido himself to handle mutual imports: "Guido van Rossum recommends avoiding all uses of from <module> import ..., and placing all code inside functions. Initializations of global variables and class variables should use constants or built-in functions only. This means everything from an imported module is referenced as <module>.<name>." [http://www.python.org/doc/faq/programming.html] How can I get this simple example to work? Thank you for any help in advance, Mack -- http://mail.python.org/mailman/listinfo/python-list