#6428: py3k requires that __bool__ return a bool (and not an int)
Fix the error message and the documentation.
This commit is contained in:
parent
dd07ebb44a
commit
097cd072c0
|
@ -1254,11 +1254,11 @@ Basic customization
|
|||
.. index:: single: __len__() (mapping object method)
|
||||
|
||||
Called to implement truth value testing and the built-in operation
|
||||
``bool()``; should return ``False`` or ``True``, or their integer equivalents
|
||||
``0`` or ``1``. When this method is not defined, :meth:`__len__` is called,
|
||||
if it is defined, and the object is considered true if its result is nonzero.
|
||||
If a class defines neither :meth:`__len__` nor :meth:`__bool__`, all its
|
||||
instances are considered true.
|
||||
``bool()``; should return ``False`` or ``True``. When this method is not
|
||||
defined, :meth:`__len__` is called, if it is defined, and the object is
|
||||
considered true if its result is nonzero. If a class defines neither
|
||||
:meth:`__len__` nor :meth:`__bool__`, all its instances are considered
|
||||
true.
|
||||
|
||||
|
||||
.. _attribute-access:
|
||||
|
|
|
@ -12,6 +12,10 @@ What's New in Python 3.2 Alpha 1?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #6428: Since Python 3.0, the __bool__ method must return a bool
|
||||
object, and not an int. Fix the corresponding error message, and the
|
||||
documentation.
|
||||
|
||||
- The deprecated PyCObject has been removed.
|
||||
|
||||
- Issue #6347: Include inttypes.h as well as stdint.h in pyport.h.
|
||||
|
|
|
@ -4807,10 +4807,8 @@ slot_nb_bool(PyObject *self)
|
|||
}
|
||||
else {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%s should return "
|
||||
"bool or int, returned %s",
|
||||
(using_len ? "__len__"
|
||||
: "__bool__"),
|
||||
"__bool__ should return "
|
||||
"bool, returned %s",
|
||||
Py_TYPE(temp)->tp_name);
|
||||
result = -1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue