Is there a way to specify a superclass at runtime?

MRAB python at mrabarnett.plus.com
Mon Oct 5 15:32:17 CEST 2009


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



More information about the Python-list mailing list