> If I have ONE.py file with some variable a, and ONE imports TWO, which > has a variable b, can TWO access variable a (I don't think so, but I > just thought I'd check).
Correct you can't do it. And quite rightly so because trying to do so would indicate a faulty design! When we import a module it can be one of two things: 1) A generic reusable bit of code written by someone else which has no knowledge of the internal structure of our code, therefore it can never attempt to access our code. 2) A module that we have written as part of an overall solution. If that module tries to access code in our module it means we have not factored our code properly to produce reusable modules(in fact the moduile is not modular! Modules should only access their own data or the data in other modules that they import, there should not be cyclic dependencies. If there are, we have a faulty design. > I guess the way round this is just to make some classes & objects, and > then they can easily pass parameters to each other, but I just thought > I'd check. You can pass parameters between modules without resorting to classes, thats an entirely different animal; ###### ONE.py ##### import TWO onevar = TWO.twovar TWO.init(onevar) TWO.foo() ######## TWO.py #### class UninitialisedModuleError(Exception) twovar = 77 importer = None #placeholder variable def init(aValue): global onevar onevar = aValue def foo(): if onevar: print onevar else: raise UninitialisedModuleError ############# So by using an init function TWO can grab a value from whatever module imports TWO. If the module is not initialised an exception gets raised. This mechanism provides a safe way to avoid circular dependencies by keeping TWO ignorant of the innards of the importing module. HTH, Alan G Author of the learn to program web tutor http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor