On Fri, 2006-01-20 at 13:50 -0800, Marilyn Davis wrote: > for each in significant_headers.keys(): > this = '''self.h_%s = "%s"''' % \ > (each[:-2].lower().replace('-','_'), > repr(significant_headers[each])) > exec(this)
So you are using exec to process an assignment statement. The setattr builtin function will do what you want. http://docs.python.org/lib/built-in-funcs.html#l2h-64 so your code could wind up looking something like: setattr( self, 'h_' + each[:-2].lower().replace('-','_'), significant_headers[each] ) Looking at that code, you can pull the key and value from significant_headers in the for statement. That is: for key,val in significant_headers.items(): setattr( self, 'h_' + key[:-2].lower().replace('-','_'), val ) Now the line that actually determines the attribute name looks pretty ugly. I would recommend writing a function to replace that operation with an understandable function name (perhaps key2name). That would result in: setattr(self, key2name(key), val) Hope this helps. The ease with which Python allows you to attach names to values is one of the great features of the language. -- Lloyd Kvam Venix Corp _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor