Jan Eden wrote:
> The situation is this:
> 
> For every object, two string attributes are determined during
> initialization (one being read from a database, the other inherited
> as a superclass attribute). The first contains the site name, the
> second the object type. I'd like to set the template attribute to the
> proper class:
> 
> import Templates
> 
> self.site_name = 'SiteA'
> self.template_type = 'Page'
> 
> self.template = ???
> 
> self.template should refer to Templates.SiteA.Page in this case
> (where SiteA is a module of package Templates, and Page is a class
> within that module). Danny already said that classes can be treated
> just like any other object - but how do I get from a string to a
> class or module name?

Use getattr() to access attributes by name. SiteA is an attribute of Templates 
and Page is an attribute of SiteA so you can get use getattr() twice to get 
what you want:

site = getattr(Templates, self.site_name)
self.template = getattr(site, self.template_type)

> Thanks for all your help, and sorry for my ignorance,

No problem, this list is for beginners!

Kent
-- 
http://www.kentsjohnson.com

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to