Guido van Rossum wrote: > > I'll let this short and sweet PEP speak for itself. > > http://python.sourceforge.net/peps/pep-0285.html > > PEP: 285 > Title: Adding a bool type > Version: $Revision: 1.1 $ > Last-Modified: $Date: 2002/03/08 15:38:37 $ > Author: guido@python.org (Guido van Rossum) > Status: Draft > Type: Standards Track > Created: 8-Mar-2002 > Python-Version: 2.3 > Post-History: 8-Mar-2002 (python-dev) > > Abstract > > This PEP proposes the introduction of a new built-in type, bool, > with two constants, False and True. The bool type would be a > straightforward subtype (in C) of the int type, and the values > False and True would behave like 0 and 1 in most respects (e.g. > False==0 and True==1 would be true) except repr() and str(). All > built-in operations that conceptually return a Boolean result will > be changed to return False or True instead of 0 or 1; for example, > comparisons and the "not" operator. > > Rationale > > Most languages eventually grow a Boolean type; even C99 has one. > It's useful to be able to tell from a function result that the > outcome has Boolean semantics. +1. > Specification > > The following Python code specifies most of the properties of the > new type: > > class bool(int): > > def __new__(cls, val=0, _create=0): > if _create: > # This is nor part of the spec, > # just a hack to bootstrap False and True > return int.__new__(cls, not not val) > elif val: > return True > else: > return False > > def __repr__(self): > if self: > return "True" > else: > return "False" > > __str__ = __repr__ I don't like this: it will break too much code since there are already two singletons Py_True and Py_False available in Python and these return 1 / 0 resp. > def __and__(self, other): > if isinstance(other, bool): > return bool(int(self) & int(other)) > else: > return NotImplemented > > __rand__ = __and__ > > def __or__(self, other): > if isinstance(other, bool): > return bool(int(self) | int(other)) > else: > return NotImplemented > > __ror__ = __or__ > > def __xor__(self, other): > if isinstance(other, bool): > return bool(int(self) ^ int(other)) > else: > return NotImplemented > > __rxor__ = __xor__ > > False = bool(0, _create=1) > True = bool(1, _create=1) Please adjust Py_True and Py_False (at C level) to be identical to these constants. > Issues > > Because the repr() or str() of a bool value is different from an > int value, some code (e.g. doctest-based unit tests) may fail. > How much of a backwards compatibility problem this will be, I > don't know. If we find this is a real problem, we could add a > command-line option to make False and True aliases for 0 and 1 and > bool an alias for int. Please, no ! Ideal would be to make bool a subtype of int and True and False two singletons created from 1 and 0 having the bool type: that's simple and backwards compatible. One idea for a possible addition: Add boolean support to the array module so that it becomes possible to create arrays of bits. > Copyright > > This document has been placed in the public domain. > > Local Variables: > mode: indented-text > indent-tabs-mode: nil > fill-column: 70 > End: > > --Guido van Rossum (home page: http://www.python.org/~guido/) > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4