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

Reply via email to