On 9/14/2016 3:16 AM, Rustom Mody wrote:
In THOSE TYPES that element can justifiably serve as a falsey (empty) type
However to extrapolate from here and believe that ALL TYPES can have a falsey
value meaningfully, especially in some obvious fashion, is mathematically
nonsense.
Python make no such nonsense claim. By default, Python objects are truthy.
>>> bool(object())
True
Because True is the default, object need not and at least in CPython
does not have a __bool__ (or __len__) method. Classes with no falsey
objects, such as functions, generators, and codes, need not do anything
either. In the absence of an override function, the internal bool code
returns True.
It is up to particular classes to override that default and say that it
has one or more Falsey objects. They do so by defining a __bool__
method that returns False for the falsey objects (and True otherwise) or
by defining a __len__ method that returns int 0 for falsey objects (and
non-0 ints otherwise). If a class defines both, __bool__ wins.
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list