所有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