所有Python提供的类型都有一个检查方法(即,PyList_Check
),它允许您检查任意PyObject*
是否实际上是特定类型。使用Python C API实现PyMyType_Check方法?
我该如何实现这个我自己的类型?我还没有在网上找到任何好的东西,尽管这似乎是一件很正常的事情。另外,也许我只是在查看大型源代码树时非常糟糕,但是我不能在我的生活中发现PyList_Check
或其任何Python(2.5)源代码中的任何同伴的实现。
所有Python提供的类型都有一个检查方法(即,PyList_Check
),它允许您检查任意PyObject*
是否实际上是特定类型。使用Python C API实现PyMyType_Check方法?
我该如何实现这个我自己的类型?我还没有在网上找到任何好的东西,尽管这似乎是一件很正常的事情。另外,也许我只是在查看大型源代码树时非常糟糕,但是我不能在我的生活中发现PyList_Check
或其任何Python(2.5)源代码中的任何同伴的实现。
那是因为they're macros那使用深沉的魔法。为自己节省点头痛,并改用PyObject_IsInstance()
。
如果你想实现自己的宏,你可以尝试...
#define PyMyType_Check(op) \
PyObject_TypeCheck(op, &PyMyType_Type)
http://docs.python.org/c-api/structures.html#PyMemberDef(是的,我知道这是2.6.5文档,但如果重要结构发生变化,我会很惊讶)。 – msw 2010-05-10 19:51:03