如何使用C API在Python中定义新类型(类)?

21 投票
2 回答
12913 浏览
提问于 2025-04-15 23:39

我正在尝试使用Python的C接口,在一个模块里定义一个新类,这样就可以把用C写的一些功能暴露给Python代码。我特别想要的是以类的形式,而不是一组模块函数。

不过,我在官方文档中找不到关于这个特定任务的任何信息。我找到的最接近的就是Python.h头文件里的PyClass_New函数,但在官方文档里没有提到这个函数,所以我猜它可能不应该被使用。

那么,从C代码定义一个新的Python类的正确方法是什么呢?

谢谢。

2 个回答

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

这可能对你有帮助,你可以声明一个 PyTypeObject 变量来定义一个新类。

10

这部分文档(以及周围的内容)应该能给你提供大部分需要的信息。点击这里可以查看相关内容。xxsubtype.c这个文件提供了一个示例模块,它定义了一个新的类(这个类是list的子类,目的是展示如何做到这一点),而xxmodule.c则展示了(除了很多其他内容)如何定义一个新的类型。

撰写回答