On Sun, 07 Apr 2013 10:54:46 +0000, Helmut Jarausch wrote:

> class  Foo :
>     ....
>     def to_binary(self, *varargs, **keys):
>        ....
>        code= ...
>        args= ...
>        # Add function header
>        code = 'def to_binary(self, %s):\n' % ', '.join(args) + code
>        exec(code)
>        self.to_binary = new.instancemethod(to_binary, self,
>                                            self.__class__)
>        return self.to_binary(*varargs, **keys)


Self-modifying code! Yuck!

Nevertheless, try changing the line with new.instancemethod to this:

        self.to_binary = types.MethodType(to_binary, self)


and see if it works. If it complains about the call to exec, then change 
that part of the code to this:

        ns = {}
        exec(code, ns)
        to_binary = ns['to_binary']
        self.to_binary = types.MethodType(to_binary, self)


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to