Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Re: python 3 problem: how to convert an extension method into a classMethod

Reply
Thread Tools

Re: python 3 problem: how to convert an extension method into a classMethod

 
 
Peter Otten
Guest
Posts: n/a
 
      02-26-2013
Ethan Furman wrote:

> On 02/26/2013 09:21 AM, Robin Becker wrote:
>> In python 2 I was able to improve speed of reportlab using a C extension
>> to optimize some heavily used methods.
>>
>> so I was able to do this
>>
>>
>> class A:
>> .....
>> def method(self,...):
>> ....
>>
>>
>> try:
>> from extension import c_method
>> import new
>> A.method = new.instancemethod(c_method,None,A)
>> except:
>> pass
>>
>> and if the try succeeds our method is bound as a class method ie is
>> unbound and works fine when I call it.
>>
>> In python 3 this doesn't seem to work at all. In fact the new module is
>> gone. The types.MethodType stuff doesn't seem to work.
>>
>> Is there a way in Python 3.3 to make this happen? This particular method
>> is short, but is called many times so adding python wrapping layers is
>> not a good way forward.

>
> Dumb question, but have you tried just assigning it? In Py3 methods are
> just normal functions...
>
> 8<----------------------
> class A():
> pass
>
> A.method = c_method
> 8<----------------------


The problem is that functions implemented in C don't support the descriptor
protocol (they don't have a __get__() method). So

>>> from math import sqrt
>>> class A(int):

.... pass
....
>>> A.c = sqrt
>>> A.py = lambda self: sqrt(self)
>>> a = A(42)
>>> a.py()

6.48074069840786
>>> a.c()

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sqrt() takes exactly one argument (0 given)


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
python 3 problem: how to convert an extension method into a classMethod Robin Becker Python 1 02-27-2013 04:46 AM
Re: python 3 problem: how to convert an extension method into a classMethod Peter Otten Python 0 02-26-2013 08:26 PM
Re: python 3 problem: how to convert an extension method into a classMethod Mark Lawrence Python 0 02-26-2013 07:33 PM
Re: python 3 problem: how to convert an extension method into a classMethod Peter Otten Python 0 02-26-2013 06:38 PM
Re: python 3 problem: how to convert an extension method into a classMethod Dave Angel Python 0 02-26-2013 05:52 PM



Advertisments