[Python-Dev] bool does not want to be subclassed?

"Martin v. Löwis" martin at v.loewis.de
Fri Feb 13 02:47:19 EST 2004


Joshua Marshall wrote:
> I don't think I'm convinced; the same argument could be used for
> integers (if it doesn't make sense to create a sort of boolean which
> isn't in the set { true, false }, then it doesn't make sense to
> create a sort of integer which isn't in the set { ..., -2, -1, 0, 1,
> 2, ... }).  And maybe it doesn't, but this isn't the only reason for
> subclassing.  Another reason for subclassing is to create items which
> can act like existing objects, but which have some additional
> behavior.

And indeed, for int, it is possible to have subclasses which have new
instances whose values are in the set {..., -2, -1, 0, 1, 2, ...}.
Indeed, it is possible to have multiple instances of int *itself* whose
value is, say, 1000:

 >>> 500+500 is 500+500
False

The same is not true for bool: There are only two *instances* of the
type, not just two equivalence classes of equal values:

 >>> (4>5) is (3>9)
True

So bool guarantees: a) there are only two distinct values, and b)
there are only two different objects representing these values.
It is property b) which prohibits subclassing.

Regards,
Martin




More information about the Python-Dev mailing list