Hi, I used to use an extended if...elif sequence to instantiate an object and call this object's display method afterwards: #### if safe['type'] == pages: page = Show.Page(id=safe['id'], start=safe['start'] ...), elif safe['type'] == pages: author = Show.Author(id=safe['id']...) ...
page.Display() #### To improve readability, I changed this code to use a dictionary: #### valid_types = dict( pages=Show.Page, authors=Show.Author, ... ) page = valid_types[safe_parameters['type']](safe_parameters) page.Display() #### The problem is that the __init__ methods of the respective classes take a different number of parameters - this is why I pass the whole safe_parameters dictionary. This has a number of drawbacks when instantiating an object in other situations because I cannot use a default for some parameters while passing some others. So I'd like to do pass the parameters individually, based on the class. I know I would need to expand the valid_types dictionary to include the parameters - but how can I pass these one by one? What I came up with is a monster (which does not work anyway): valid_types = dict( pages=dict(klasse=Show.Page, parameters=dict(id=safe['id'], start=safe['start'] ...)) authors=dict(klasse=Show.Author, ...) ... ) page = valid_types[safe_parameters['type']]['klasse'](valid_types['parameters']) page.Display() How can I circumvent the if...elif sequence and have the parameters passed individually at the same time? Thanks for any suggestions, Jan -- Common sense is what tells you that the world is flat. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor