user352864
user352864

Reputation: 223

How to define a new type (class) in Python using C API?

I am trying to use the Python C API to define a new class inside a module that would expose certain functionality written in C to Python code. I specifically want to have it in the form of a class and not a set of module functions.

However, I can't find anything regarding this particular task in the official documentation. The closest I could find is PyClass_New function (in the Python.h header) but it is not mentioned anywhere in the official docs, so I assume it is not supposed to be used.

So, what is the proper way to define a new Python class from C code?

Thanks.

Upvotes: 21

Views: 13312

Answers (2)

Alex Martelli
Alex Martelli

Reputation: 881695

This part of the docs (and surrounding ones) should give you most of the info you need. The xxsubtype.c sources provide one example module that defines a new class (as a subclass of list, to show precisely how to do that, too) and xxmodule.c shows (among many other things) also how to define a new type.

Upvotes: 10

左晓良
左晓良

Reputation: 47

 static PyObject* Request_new(PyTypeObject *type, PyObject *args, PyObject *kwds) 

May help you, then you can declare PyTypeObject variable to define a new class.

Upvotes: -4

Related Questions