需要将一个 PyUnicodeObject 值传递给 PyObject 变量。 有什么转换方法吗?
谢谢 卡诺尔
最佳答案
您可以为此在 C 代码中使用强制转换:
PyUnicodeObject *p = ...whatever...;
callsomefun((PyObject*)p);
所有各种特定的具体类型 PyWhateverObject
都可以被认为是“派生自”PyObject。现在 C 没有继承的概念,所以里面没有“派生”,但是 Python VM 非常简单地综合了它,通过确保每个这样的对象的第一个结构成员(或第一个成员的第一个成员,或者......)是一个PyObject
结构(有一个宏)。这保证了正常的 C 指针转换(尽管从技术上讲是“有风险的”,因为编译器无法检查正确性——如果您转换错误的东西,您将在运行时崩溃;-)在指向 PyObject 的指针之间正确使用时按预期工作以及指向特定的具体 Python 类型结构的任何指针。
关于python - 有没有一种方法可以将 PyUnicodeObject 变量转换为 PyObject 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2840144/