because when i import this module, the classes will already be determined by the intitial flag setting.
i.e. SIMULATION = False class SimController(object): def foo(self): print 'bar' class RealController(object): def foo(self): print 'baz' if SIMULATION: SuperKlass = SimController else: SuperKlass = RealController class Controller(SuperKlass): pass In [2]: import testcontroller In [3]: testcontroller.SIMULATION Out[3]: False In [4]: c = testcontroller.Controller() In [5]: c.foo() baz In [6]: testcontroller.SIMULATION = True In [7]: c = testcontroller.Controller() In [8]: c.foo() baz On Mon, Oct 5, 2009 at 3:32 PM, MRAB <pyt...@mrabarnett.plus.com> wrote: > Chris Colbert wrote: >> >> I have an application that needs to run different depending on whether >> the input data is being simulated, or provided from instrumentation. >> >> I am trying to abstract this machinery in a single class called >> Controller which I want to inherit from either SimController or >> RealController based on whether a module level flag SIMULATION is set >> to True or False. >> >> so I have something like this: >> >> >> SIMULATION = False >> >> class SimController(object): >> "do sim stuff here" >> >> class RealController(object): >> " do real stuff here" >> >> class Controller(SuperKlass): >> pass >> >> >> so if SIMULATION == False I want to be able to instance a Controller >> object that inherits from RealController and vice-versa. >> >> I thought this might be possible with metaclasses, but I didnt find >> anything useful in the docs or on google. >> >> Thanks for any help! >> > Why not just: > > SIMULATION = False > > class SimController(object): > "do sim stuff here" > > class RealController(object): > " do real stuff here" > > if SIMULATION: > SuperKlass = SimController > else: > SuperKlass = RealController > > class Controller(SuperKlass): > pass > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list