A. Lloyd Flanagan alloydflanagan at
Fri Apr 25 22:49:46 CEST 2003

and-google at (Andrew Clover) wrote in message news:<2c60a528.0304240517.25f2fe29 at>...
> In this case I guess we're looking at something like:
>   try:
>     True
>   except NameError:
>     exec 'False, True= 0, 1'
>     def bool(c):
>       if c:
>         return True
>       return False
> Any objections?

Idlefork uses the following:

#"borrowed" from idlefork project,
except NameError:
    import __builtin__
    __builtin__.True = 1
    __builtin__.False = 0
    from operator import truth
    __builtin__.bool = truth

This has the advantage of making True and False look more like
builtins.  The only difference is that str(True) is "1" not "True". 
Of course, if __builtin__ gets protected, this will die an ugly death.
 You could wrap it in "try: ... except Exception: pass", if you were
sufficiently paranoid.

More information about the Python-list mailing list