The following code works fine on Python 3.5.2 but `exec` attribute fails to be set to the object on Python 2.7.12: ```python >>> o = type('O', (object,), {}) >>> o.e = 1 >>> o.eval = 1 >>> o.exec = 1 File "", line 1 o.exec = 1 ^ SyntaxError: invalid syntax ``` OS Environments: Ubuntu 16.04.4 LTS x64
Why Python 2 documentation does not outline that keywords / statements can't be used as the object attributes? https://docs.python.org/2/reference/simple_stmts.html#exec And why does this restriction exist at all? The keywords always stand-alone and newer follow '.', i.e. always distinguishable from the object attributes.
I'm sorry for the previous question, now it's clear (the space is allowed after the '.' which complicates the parsing): ``` >>> o.e = 1 >>> o. e 1 >>> o.e 1 ``` Anyway, it would be nice to outline the eligible values for attributes in the documentation (https://docs.python.org/2/tutorial/classes.html).
Any valid variable name can be used as a an attribute; for example, "spam" is valid while "spam-eggs" is not. This isn't unique to classes, but to all assignments everywhere. If we allowed `o.exec = blah` then we should also allow `exec = blah` at the global scope and that's a whole load of not happening, much less in Python 2 (which isn't getting any significant updates anymore).
History
Date
User
Action
Args
2022-04-11 14:58:59
admin
set
github: 77582
2018-05-01 21:08:42
abarry
set
messages: +
2018-05-01 21:04:58
luav
set
messages: +
2018-05-01 20:58:29
luav
set
messages: +
2018-05-01 20:34:08
abarry
set
status: open -> closednosy: + abarrymessages: + resolution: not a bugstage: resolved