python - 从 C 导入标准 Python 库

标签 python c python-3.x python-c-extension

我正在写一个Python 3 C extension我想在其中使用 MappingProxyType (from types import MappingProxyType)。从我在Cpython源代码中看到的,MappingProxyType是用Python而不是C编写的。

如何在 C 语言中使用这种类型?我想一定有类似 C 级“导入”的东西,然后我可以从名称中找到 PyObject(或者更确切地说,PyTypeObject)作为 C 字符串。

最佳答案

有一个C API用于导入模块。然后你只需要从模块获取 MappingProxyType 类型属性:

static PyTypeObject *import_MappingProxyType(void) {
    PyObject *m = PyImport_ImportModule("types");
    if (!m) return NULL;
    PyObject *t = PyObject_GetAttrString(m, "MappingProxyType");
    Py_DECREF(m);
    if (!t) return NULL;
    if (PyType_Check(t))
        return (PyTypeObject *) t;
    Py_DECREF(t);
    PyErr_SetString(PyExc_TypeError, "not the MappingProxyType type");
    return NULL;
}

关于python - 从 C 导入标准 Python 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253097/

相关文章:

c++ - C 风格字符串和 c++ std::string 的函数

c - 从 unsigned int[2] 加倍?

python-3.x - 检查一个数据框中的单词是否出现在另一个数据框中(python 3,pandas)

mysql - 使用 Pandas 插入 MySQL 替换内容

python-3.x - Pandas 分组依据和条件比率

javascript - 获取给定 Angular x 和 y 增量值

Python - 为什么我的列表没有在此方法的范围之外进行修改?我如何修改我的代码,使其成为这样?

python - 将我的函数转换为一个类

python - pandas - 将 df.index 从 float64 更改为 unicode 或字符串

使用 while 循环计算每天步行的平均英里数