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
