[Python-Dev] Why are class dictionaries not accessible? (original) (raw)
Guido van Rossum guido at python.org
Thu Jun 23 11:19:44 EDT 2016
- Previous message (by thread): [Python-Dev] Why are class dictionaries not accessible?
- Next message (by thread): [Python-Dev] Why are class dictionaries not accessible?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Jun 23, 2016 at 8:01 AM, Random832 <random832 at fastmail.com> wrote:
On Wed, Jun 22, 2016, at 11:11, Guido van Rossum wrote: > This is done in order to force all mutations of the class dict to go > through attribute assignments on the class. The latter takes care of > updating the class struct, e.g. if you were to add an
_add_
method > dynamically it would update tpasnumber->nbadd. If you could modify the > dict object directly it would be more difficult to arrange for this side > effect.Why is this different from the fact that updating a normal object's dict bypasses descriptors and any special logic in setattr? Dunder methods are already "special" in the sense that you can't use them as object attributes; I wouldn't be surprised by "assigning a dunder method via the class's dict breaks things".
It was a long time when I wrote this, but IIRC the breakage could express itself as a segfault or other C-level crash due to some internal state invariant of the type object being violated, not just an exception. The existence of ctypes notwithstanding, we take C-level crashes very seriously.
-- --Guido van Rossum (python.org/~guido) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20160623/900098e1/attachment-0001.html>
- Previous message (by thread): [Python-Dev] Why are class dictionaries not accessible?
- Next message (by thread): [Python-Dev] Why are class dictionaries not accessible?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]