[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