> import Templates > > self.site_name = 'SiteA' > self.template_type = 'Page' > > self.template = ???
How about a dictionary holding references to the classes against their names? The dictionary could be a class attribute of the top level superclass or a module level dictionary. It should be updated ideally by the class definition or more simply by hard coding a registration fuinction. Something like class Root: subclasses = {'Root': Root} @classmethod def registerSubclass(name, aClass): #could check it really is a subclass here... Root.subclasses[name] = aClass class Sub(Root): pass Root.registerSubclass("Sub",Sub) Now your code becomes: self.site_name = 'SiteA' self.template_type = 'Page' self.template = Root.subclasses[self.template_name]() # instance of Page In fact it could just be a dictionary of templates, it needn't be subclasses at all, however for the sake of clean polymorphism its probably better if they are. HTH Alan G. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor