使用 Python C API 实现 PyMyType_Check 方法?

Posted

技术标签:

【中文标题】使用 Python C API 实现 PyMyType_Check 方法?【英文标题】:Implementing PyMyType_Check methods with Python C API? 【发布时间】:2010-05-10 19:34:25 【问题描述】:

Python 提供的所有类型都有一个检查方法(即PyList_Check),允许您检查任意PyObject* 是否实际上是特定类型。

如何为我自己的类型实现这一点?我没有在网上找到任何好的东西,虽然这似乎是一件很正常的事情。

另外,也许我只是在查看大型源代码树方面很糟糕,但我终生无法在 Python (2.5) 源代码中找到 PyList_Check 或它的任何同伴的实现。

【问题讨论】:

docs.python.org/c-api/structures.html#PyMemberDef(是的,我知道这是 2.6.5 文档,但如果基本结构发生变化,我会感到惊讶)。 【参考方案1】:

那是因为they're macros 使用了深层魔法。省点麻烦,改用PyObject_IsInstance()

【讨论】:

【参考方案2】:

如果您想实现自己的宏,可以尝试...

#define PyMyType_Check(op) \
    PyObject_TypeCheck(op, &PyMyType_Type)

【讨论】:

以上是关于使用 Python C API 实现 PyMyType_Check 方法?的主要内容,如果未能解决你的问题,请参考以下文章

具有递归的 Python C API - 段错误

Tensorflow c api 跟踪数据

C/C++实现nodejs扩展接口 node-addon-api

用 Python 实现 Paypal REST API

扩展Python模块系列----异常和错误处理

Python C API 引用计数器