Where is PyMethod_GET_CLASS in Python 3?

Antoine Pitrou solipsis at pitrou.net
Thu Dec 17 11:11:00 EST 2009


Le Tue, 15 Dec 2009 08:08:01 -0800, Infinity77 a écrit :
> 
>     When building C extensions In Python 2.X, there was a magical
> PyMethod_GET_CLASS implemented like this:
> 
> #define PyMethod_GET_CLASS(meth) \
> 	(((PyMethodObject *)meth) -> im_class)
> 
> It looks like Python 3 has wiped out the "im_class" attribute. Which is
> the alternative was to handle this case in Python 3?

First, is it a bound method? Unbound methods are just function objects in 
py3k. Check that PyMethod_Check() returns true.
Second, have you tried Py_TYPE(PyMethod_GET_SELF(meth))?

> BTW, it's very, very,
> *very* hard to find any possible reference to help migrating existing C
> extensions from Python 2.X to Python 3.

There's http://docs.python.org/3.1/howto/cporting.html
You are encouraged to post any suggestions or corrections on the bug 
tracker: http://bugs.python.org

Finally, there's also a dedicated mailing-list for porting to py3k:
http://mail.python.org/mailman/listinfo/python-porting
While it hasn't seen a lot of activity lately, I'm sure there are people 
there willing to answer any questions you have!

Regards

Antoine.





More information about the Python-list mailing list