需要将PyUnicodeObject的值传递给PyObject变量。 那有转换方法吗?
感谢 karnol
答案 0 :(得分:3)
您可以在C代码中使用强制转换来实现此目的:
PyUnicodeObject *p = ...whatever...;
callsomefun((PyObject*)p);
可以将所有各种具体的具体类型PyWhateverObject
视为“派生自”PyObject。现在C没有继承的概念所以它没有“派生”,但是Python VM通过确保每个这样的对象的第一个结构成员(或第一个成员的第一个成员,或者......)是非常简单地合成它PyObject
struct(有一个宏)。这保证了指针的正常C转换(虽然技术上“冒险”,因为编译器无法检查正确性 - 如果你输错了东西,你只会在运行时崩溃;-)在指向PyObject的指针之间正确使用时按预期工作以及指向特定的具体Python类型结构的任何指针。
答案 1 :(得分:2)
PyUnicodeObject
是PyObject
的子集,因此传递它不会有任何问题。