Issue33401
Created on 2018-05-01 20:32 by luav, last changed 2022-04-11 14:58 by admin. This issue is now closed.
| Messages (5) | |||
|---|---|---|---|
| msg316015 - (view) | Author: (luav) | Date: 2018-05-01 20:32 | |
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 "<stdin>", line 1
o.exec = 1
^
SyntaxError: invalid syntax
```
OS Environments: Ubuntu 16.04.4 LTS x64
|
|||
| msg316016 - (view) | Author: Anilyka Barry (abarry) * ![]() |
Date: 2018-05-01 20:34 | |
This is because `exec` is a keyword in Python 2, whereas in Python 3 it's a function. |
|||
| msg316018 - (view) | Author: (luav) | Date: 2018-05-01 20:58 | |
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. |
|||
| msg316019 - (view) | Author: (luav) | Date: 2018-05-01 21:04 | |
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). |
|||
| msg316020 - (view) | Author: Anilyka Barry (abarry) * ![]() |
Date: 2018-05-01 21:08 | |
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: + msg316020 |
| 2018-05-01 21:04:58 | luav | set | messages: + msg316019 |
| 2018-05-01 20:58:29 | luav | set | messages: + msg316018 |
| 2018-05-01 20:34:08 | abarry | set | status: open -> closed nosy:
+ abarry resolution: not a bug |
| 2018-05-01 20:32:55 | luav | create | |
