> If you implement _test in C, works none of the above.
> The only difference I can see is that:

> type(_test.func2)
> <type 'function'>
> is for Python implemented function and

> type(_test.func2)
> <type 'builtin_function_or_method'>
> for C implementation

> I would really like to know the answer too.
> How do you implement some methods in C without subclassing ?


But the strange thing is if I use new.instancemethod the c function
becomes bound (using my previous code for _test.c)

import _test

class Test:
        def func1(self):
                print "In class "+repr(self.__class__.__namd__)

import new
Test.func2 = new.instancemethod(_test.func2, None, Test)
del new

t = Test
type(_test.func2)       # returns <type 'builtin_function_or_method'>
type(T.func1)           # returns <unbound method Test.func>
type(t.func1)           # returns <bound method Test.func of <__main__.Test 
instance at 0x4eb4b8>>
type(T.func2)           # returns <built-in function func2>
type(t.func2)           # returns <bound method Test.func2 of <__main__.Test 
instance at 0x4eb4b8>>

So is seems like it is bound appropriately, but when called across the
C/Python api the first argument (self) of func2 is not separated
from the other arguments (and thus is not sent into the c
function as PyObject* self, but instead as part of PyObject* args)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to