new.instancemethod - how to port to Python3

Helmut Jarausch jarausch at skynet.be
Sun Apr 7 06:54:46 EDT 2013


On Sun, 07 Apr 2013 11:41:46 +0100, Arnaud Delobelle wrote:

> On 7 April 2013 10:50, Helmut Jarausch <jarausch at skynet.be> wrote:
>> Hi,
>>
>> I'm trying to port a class to Python3.3 which contains
>>
>> class  Foo :
>>     ....
>>     def to_binary(self, *varargs, **keys):
>>        ....
>>
>>     ....
>>     self.to_binary = new.instancemethod(to_binary, self,
>>     self.__class__)
> 
> `self` isn't bound in this lexical scope (the class scope).  Or is your
> indentation incorrect?  However, if this statement was within the
> `to_binary` method, then `to_binary` wouldn't be bound so I can't make a
> reasonable guess.
> 
>>     # Finally call it manually return apply(self.to_binary, varargs,
>>     keys)
>>
> [...]

Sorry, the excerpt wasn't complete (it's not my code):
Here a more complete excerpt:

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)



More information about the Python-list mailing list