[Python-ideas] Changing the meaning of bool.__invert__
Brendan Barnwell
brenbarn at brenbarn.net
Thu Apr 7 21:32:58 EDT 2016
On 2016-04-07 08:15, Ethan Furman wrote:
> On 04/07/2016 12:46 AM, Antoine Pitrou wrote:
>>
>> How about changing the behaviour of bool.__invert__ to make it in line
>> with the Numpy boolean?
>> (i.e. bool.__invert__ == operator.not_)
>
> No. bool is a subclass of int, and changing that now would be a serious
> breach of backward-compatibility, not to mention breaking existing code
> for no good reason.
Let's not forget that subclasses don't have to exactly duplicate all
the behavior of their superclasses. That's why there's such a thing as
overriding. Bool could remain a subclass of int, and still change its
__invert__ behavior by overriding __invert__.
It's true that this would be a backwards incompatible change, but
behavior like ~True==-2 doesn't seem like something a lot of people are
relying on. It would be worth looking into how much code actually does
rely on it.
--
Brendan Barnwell
"Do not follow where the path may lead. Go, instead, where there is no
path, and leave a trail."
--author unknown
More information about the Python-ideas
mailing list