Devin Jeanpierre wrote:
Well. It reads fine in a certain sense, in that I can figure out what's going on (although I have some troubles figuring out why the heck certain things are in the code). The issue is that what's going on is otherworldly: this is not a Python pattern, this is not a normal approach. To me, that means it does not read fine.
Certainly it's a Python pattern -- it's what you do to dynamically generate code.
The use of exec also results in (seemingly) arbitrary constraints on the input. Like, why can't "--" be a name? Because exec? Is there some other reason?
'--' not being allowed for a name has *nothing* to do with exec, and everything to do with `--` not being a valid Python identifier.
> '--' is a valid attribute name on virtually any object that supports > attribute setting (e.g. function objects). Of course, you need to use > setattr() and getattr(). Is this really the reason, or is it a > limitation caused primarily by the usage of exec and the need to > prevent code injection? If somebody added this feature later on, would > this create a security vulnerability in certain projects that used > namedtuple in certain ways? So you think somevar = getattr(my_named_tuple, '--') is more readable than somevar = my_named_tuple.spam ? ~Ethan~ -- http://mail.python.org/mailman/listinfo/python-list