I like this idea! >>> k = b'hello world' >>> v = k[0] >>> type(v) <class 'byte'> >>> ord(v) 104 >>> v + 5 __main__:1: DeprecationWarning: bytes items will become byte instances. Use ord(). 109 On the other hand, maybe 'hello'[0] should be a ch(a)r instead of str? The 'wrapping' class could be a `bytearray`? >>> k = bytearray(b'hello') >>> k[0] 104 >>> k[2:4] bytearray(b'll') The only 'downside' is that a bytearray is mutable.
On 6 Jun 2016, at 21:35, Neil Schemenauer <nas-pythonideas@arctrix.com> wrote:
On 2016-06-04, Guido van Rossum wrote: The bytes -> int behavior is widely considered a mistake. We're just not able to fix it without yet another round of layoffs ^W deprecations. And I'm not ready for that -- not even Python 4 should be allowed to change this unilaterally. Though maybe we could do something with a __future__ import.
Maybe the following would work:
- add a new method to 'bytes' that returns a view object with the current index/iteration behavior
- enable a deprecation warning for code that uses indexing/iteration on bytes
- when sufficient time has passed, revert to Python 2 behavior for indexing/iteration
Another, probably crazy and unworkable idea:
- have bytes indexing/iteration return a special type that behaves like an int or length one byte.
- ord() of this object would return a real int
- code that utilizes this object as an int would generate a warning (suggest adding an ord() call to fix code).
- eventually just return length one byte strings _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/