pick a subclass based on a parameter
Sounds like you want the Factory Pattern. You define a factory method (either in your module, or perhaps in a common parent class for all the objects it can produce) that you pass the parameter to, and it will return an instance of the correct class. In python the problem is a bit simpler than perhaps some of the details on the wikipedia article as your types are dynamic.
class Animal(object): @staticmethod def get_animal_which_makes_noise(noise): if noise == 'meow': return Cat() elif noise == 'woof': return Dog() class Cat(Animal): ... class Dog(Animal): ...
I'd store the name of the subclass in the params file, and have a factory method that would instantiate the class given its name:
class loader(object): @staticmethod def get_loader(name): return globals()[name]() class sqlite_loader(loader): pass class mysql_loader(loader): pass print type(loader.get_loader('sqlite_loader')) print type(loader.get_loader('mysql_loader'))
Store the classes in a
dict, instantiate the correct one based on your param:
db_loaders = dict(sqlite=sqlite_loader, mysql=mysql_loader) loader = db_loaders.get(db_type, default_loader)()
db_type is the paramter you are switching on, and
mysql_loader are the "loader" classes.