On Fri, 17 Apr 2009 18:22:49 -0700, Pavel Panchekha 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 > > What to do?
(1) Don't do that. (2) If you *really* have to do that, you can tell the class to look at the instance: class GeneralTypeOfObject(object): def __nonzero__(self): try: return self.__dict__['__nonzero__'] except KeyError: return something (3) But a better solution might be to subclass the class and use an instance of that instead. You can even change the class on the fly. a.__class__ = SubclassGeneralTypeOfObject # note the lack of brackets -- Steven -- http://mail.python.org/mailman/listinfo/python-list