On Fri, Apr 17, 2009 at 6:22 PM, Pavel Panchekha <pavpanche...@gmail.com> wrote: > I've got an object which has a method, __nonzero__ > The problem is, that method is attached to that object not that class > >> a = GeneralTypeOfObject() >> a.__nonzero__ = lambda: False >> a.__nonzero__() > False > > But: > >> bool(a) > True
This is as documented. See http://docs.python.org/3.0/reference/datamodel.html#special-lookup > > What to do? Either wrap the object in another object of a class that does define __bool__, or change GeneralTypeOfObject so it defines __bool__(), possibly having its __bool__ delegate to another method, which you could then override on a per-object basis similar to your current code. Cheers, Chris -- I have a blog: http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list