使用 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 方法?的主要内容,如果未能解决你的问题,请参考以下文章