On Apr 18, 9:43 pm, Aaron Brady <castiro...@gmail.com> wrote: > On Apr 17, 9:41 pm, Steven D'Aprano <st...@remove-this- > > cybersource.com.au> wrote: > > 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 > > snip > > I think you need to call the return, unlike you would in > '__getattr__'. > return self.__dict__['__nonzero__']( ) > > You're free to use a different name for the method too. > return self.custom_bool( ) > > And you don't even have to implement an ABC. Er... /have/ to, that > is.
I got it working. Thanks! -- http://mail.python.org/mailman/listinfo/python-list