Expression can be simplified on list

Chris Angelico rosuav at gmail.com
Thu Sep 29 03:53:23 EDT 2016


On Thu, Sep 29, 2016 at 4:47 PM, Rustom Mody <rustompmody at gmail.com> wrote:
>> 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.
>>
> Not sure what you are trying to say Terry...
> Your English suggests you disagree with me
> Your example is exactly what I am saying; if a type has a behavior in which
> all values are always True (true-ish) its a rather strange kind of bool-nature.
>
> Shall we say it has Buddha-nature? ;-)

There are a LOT of objects that are always true. Take this example:

class Employee:
    def __init__(self, name):
        self.name = name
        self.boss = None
    def report(self):
        if self.boss:
            self.boss.emit_report("I have done nothing.")
        else:
            company_board.proclaim("I have done everything.")

Every Employee object counts as true, and None counts as false. This
is the most normal way to write something. Unless an object represents
a collection, number, etc, that can meaningfully be "empty", it should
be assumed that it is true, and *the absence of an object* is what's
false.

Not every object has a sane representation of nothingness.

ChrisA



More information about the Python-list mailing list