no unbound methods in py3k
Terry Reedy
tjreedy at udel.edu
Thu Oct 9 15:06:17 EDT 2008
Thomas Heller wrote:
> Christian Heimes schrieb:
>> Thomas Heller wrote:
>>> but this is very ugly, imo. Is there another way?
>>> The raw_func instances that I have are not descriptors (they
>>> do not implement a __get__() method...)
>> I've written PyInstanceMethod_Type for this use case. It's not (yet)
>> available for Python code. Barry hasn't decided whether he should expose
>> the type so late in the release cycle or not. See
>> http://bugs.python.org/issue3787 and
>> http://docs.python.org/dev/3.0/c-api/method.html?highlight=pyinstancemethod#PyInstanceMethod_Type
>>
>
> Ok, so one has to write an extension to access or expose it.
>
> Oh, wait - there's ctypes:
>
> Python 3.0rc1 (r30rc1:66507, Sep 18 2008, 14:47:08) [MSC v.1500 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> from ctypes import *
>>>> pythonapi.PyInstanceMethod_New.restype = py_object
>>>> pythonapi.PyInstanceMethod_New.argtypes = [py_object]
>>>> instancemethod = pythonapi.PyInstanceMethod_New
>>>>
>>>> class Example:
> ... pass
> ...
>>>> Example.id = instancemethod(id)
>>>>
>>>> x = Example()
>>>> x.id()
> 12597296
>>>> id(x)
> 12597296
A pyCapi module that exposed via ctypes useful C functions not otherwise
accessible, with predefinition of restype and argtypes and anything else
needed, might make a nice addition to PyPI if not the stdlib. You have
done two here and I believe others have posted others.
tjr
More information about the Python-list
mailing list