Is there a way to specify a superclass at runtime?
MRAB
python at mrabarnett.plus.com
Mon Oct 5 09:32:17 EDT 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