[Python-checkins] CVS: python/nondist/peps pep-0285.txt,NONE,1.1 pep-0000.txt,1.164,1.165

Guido van Rossum gvanrossum@users.sourceforge.net
2002年3月08日 07:38:39 -0800


Update of /cvsroot/python/python/nondist/peps
In directory usw-pr-cvs1:/tmp/cvs-serv29072
Modified Files:
	pep-0000.txt 
Added Files:
	pep-0285.txt 
Log Message:
PEP 285: Adding a bool type
--- NEW FILE: pep-0285.txt ---
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.
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__
 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)
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.
 
Copyright
 This document has been placed in the public domain.

Local Variables:
mode: indented-text
indent-tabs-mode: nil
fill-column: 70
End:
Index: pep-0000.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0000.txt,v
retrieving revision 1.164
retrieving revision 1.165
diff -C2 -d -r1.164 -r1.165
*** pep-0000.txt	8 Mar 2002 05:43:22 -0000	1.164
--- pep-0000.txt	8 Mar 2002 15:38:37 -0000	1.165
***************
*** 92,95 ****
--- 92,96 ----
 S 282 A Logging System Mick
 S 284 Integer for-loops Eppstein, Ewing
+ S 285 Adding a bool type van Rossum
 
 Finished PEPs (done, implemented in CVS)
***************
*** 258,261 ****
--- 259,263 ----
 I 283 Python 2.3 Release Schedule Hylton
 S 284 Integer for-loops Eppstein, Ewing
+ S 285 Adding a bool type van Rossum
 SR 666 Reject Foolish Indentation Creighton
 

AltStyle によって変換されたページ (->オリジナル) /