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

Reply via email to