Ah yes, silly me. Must remember to go to the docs before posting :">.
On Mon, Oct 26, 2009 at 2:12 AM, bhaskar jain <[email protected]> wrote: > On Mon, Oct 26, 2009 at 1:53 AM, Sidharth Kuruvila < > [email protected]> wrote: >>>>It turns out any object that returns len(o) as 0 >>>>will evaluate as false. > > Not always. > > doc says - "instances of user-defined classes, if the class defines a > __nonzero__() or __len__() method, when that method returns the integer zero > or bool value False." > > object.__nonzero__(self) > > 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, __len__() is called, if it is defined, and the object > is considered true if its result is nonzero. If a class defines neither > __len__() nor __nonzero__(), all its instances are considered true. > > > First it looks for __nonzero__ and if its absent then only __len__ > >>>> class c: > ... def __nonzero__(self): > ... return False > ... def __len__(self): > ... return True > ... >>>> o = c() >>>> bool(o) > False > > > > > --Bhaskar. > _______________________________________________ > BangPypers mailing list > [email protected] > http://mail.python.org/mailman/listinfo/bangpypers > -- I am but a man. _______________________________________________ BangPypers mailing list [email protected] http://mail.python.org/mailman/listinfo/bangpypers
