[Python-Dev] bool does not want to be subclassed?
bob at redivi.com
Thu Feb 12 14:58:42 EST 2004
On Feb 12, 2004, at 2:41 PM, François Pinard wrote:
> Hi, people. I just noticed this:
>>>> class booleen(bool):
> ... def __repr__(self):
> ... if self:
> ... return "Vrai"
> ... return "Faux"
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: type 'bool' is not an acceptable base type
> and am a bit surprised that `bool' refuses to be sub-classed. Not that
> I cannot live without it, of course! But it might be useful being
> able to "cast" a `bool' into something for which I could control the
> representation, while keeping all other properties of `bool'.
> Is there a deep reason behind the forbidding? Or was it merely for
> possibly protecting users against themselves? :-) For me, this is a
> question, much more than an issue. Yet, if there is no deep reason,
> maybe the forbidding could be lifted?
Probably because bool is supposed to only have two values, True or
False.. not True, False, Yes, No, Vrai, Faux. You can subclass int and
implement __nonzero__ just like bool does (in fact, bool does little
more than that).
Is there a good reason for wanting to do this? Do you want to
"translate" all of Python to French? This is certainly not the way to
go about it! You're going to receive True and False from other
functions/keywords whether you like it or not. I would bet that "not
Vrai" would be "False", for example.
More information about the Python-Dev