Bug? Feature? setattr(foo, '3', 4) works!

random832 at fastmail.us random832 at fastmail.us
Fri Dec 19 10:33:08 EST 2014


On Fri, Dec 19, 2014, at 07:23, Ben Finney wrote:
> Cem Karan <cfkaran2 at gmail.com> writes:
> > I'd like to suggest that getattr(), setattr(), and hasattr() all be
> > modified so that syntactically invalid statements raise SyntaxErrors.
> 
> What syntactically invalid statements? The only syntactically invalid
> statements I see you presenting are ones that *already* raise
> SyntaxError.
> 
> I think you mean that setting an attribute on an object should be a
> SyntaxError if the resulting attribute's name is not a valid identifier.
> But why should a valid statement produce SyntaxError?
> 
> I'm −1 on such a change.

And some APIs - ctypes, for example - actually require using getattr
with an invalid identifier in some cases (where attribute access is used
for an underlying concept with names that are usually, but not always,
valid identifiers: in ctypes' case, looking up symbols from DLLs.)



More information about the Python-list mailing list