Hi!
This somewhat puzzles me:
Python 2.4 (#1, Feb 3 2005, 16:47:05) [GCC 3.3.4 (pre 3.3.5 20040809)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
.>>> class test(object): ... def __init__(self): ... self.__call__ = self.__call1 ... def __call1(self): ... print 1 ... def __call__(self): ... print 2 ... .>>> t = test() .>>> t() 2
If I take out the __call__ method completely and only set it in __init__, I get a TypeError saying that test is not callable.
I want to use this in order to provide different implementations based on the object configuration. Calculating the right function to call is non-trivial and calls are frequent, so I want to change __call__ in order to run the right function directly.
I know, I could use another level of indirection:
def __call__(self): self.the_right_method()
and then set the_right_method accordingly, but I find that somewhat sub-optimal. Is there a way to change __call__ after class creation?
Stefan -- http://mail.python.org/mailman/listinfo/python-list