New submission from Serhiy Storchaka:
The type of non-heap types can be changed in 3.5. This means that the type of
cached immutable objects such as small ints, empty or 1-character strings, etc
can be changed.
>>> class I(int):
... __slots__ = ()
... def __repr__(self):
... return 'Answer to The Ultimate Question of Life, the Universe, and
Everything'
... def __add__(self, other):
... return self * other
...
>>> (42).__class__ = I
>>> ord('*')
Answer to The Ultimate Question of Life, the Universe, and Everything
>>> x = 42; x + 2
84
>>> class S(str):
... __slots__ = ()
... def __len__(self):
... return 123
...
>>> 'a'.__class__ = S
>>> i = 1; len('abc'[:i])
123
----------
components: Interpreter Core
messages: 248981
nosy: pitrou, serhiy.storchaka
priority: high
severity: normal
status: open
title: The type of cached objects is mutable
type: behavior
versions: Python 3.5, Python 3.6
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue24912>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com