[Python-ideas] Should bool continue to inherit from int?
steve at pearwood.info
Wed Jan 21 12:47:28 CET 2015
On Wed, Jan 21, 2015 at 03:32:49AM -0800, Michael Mitchell wrote:
> PEP 285 <http://legacy.python.org/dev/peps/pep-0285> provides some
> justification for why arithmetic operations should be valid on bools and
> why bool should inherit from int (see points (4) and (6) respectively).
> Since it's been 12 years (it's possible this has been brought up again
> between now and then), I thought it could be worthwhile to take another
> I am mostly interested in a resurveying of the questions:
> 1) Would it still be very inconvenient to implement bools separately from
Yes, it would break a lot of code that for the last twelve years has
relied on being able to perform arithmetic on bools. Arguably, Python 3
might have been the opportunity to break that backwards compatibility,
but we're up to 3.4 now so we would need a very good reason to do so.
> 2) Do most Python users still agree that arithmetic operations should be
> supported on booleans?
I don't know about "most", but this Python user thinks so.
> Follow-up thought:
> Something I noticed is that with PEP 484
> <https://www.python.org/dev/peps/pep-0484/> (Type Hints) specified as is,
> there would be no way to statically verify that a function will only
> operate on ints and not bools.
If you want an int, I'm not sure why you would want to exclude bools
since they are ints.
> An example would be a function that can only
> operate on integer values in a JSON dict created by the builtin `json`
> module (using the default decoder) cannot exist, as that function could
> operate on the boolean values of the dict.
I'm afraid I don't quite follow this example. Can you give some sample
code (with or without annotations)?
More information about the Python-ideas