On Mon, 08 Dec 2008 20:55:16 +0000, Arnaud Delobelle wrote: > [EMAIL PROTECTED] writes: > >> class C: >> def createfunc(self): >> def self.func(arg): >> return arg + 1 >> >> Or, after the class definition is done, to extend it dynamically: >> >> def C.method(self, arg): >> self.value = arg >> >> ...which would be the equivalent of the following: >> >> def method(self, arg): >> self.value = arg >> C.method = method > > What about the following then? > > functions = {} > > def functions['square'](x): > return x*x > > def functions['cube'](x): > return x**3 > > -- > Arnaud
-1. In most cases, it would generally be better as: def functions(x): return x.func() since the rule-of-thumb of OOP is that objects should do things by itself. This is also more in line with python's built-in functions, which merely calls the appropriate __special__ names. and whenever creating an object is too complex, that could easily be def functions(which, x): def _function_square(): return x*x def _function_cube(): return x**3 d = {'square': _function_square, 'cube': _function_cube, } return d[which]() -- http://mail.python.org/mailman/listinfo/python-list