有没有将PyUnicodeObject变量转换为PyObject类型的方法?

时间:2010-05-15 12:46:48

标签: python python-3.x

需要将PyUnicodeObject的值传递给PyObject变量。 那有转换方法吗?

感谢 karnol

2 个答案:

答案 0 :(得分:3)

您可以在C代码中使用强制转换来实现此目的:

PyUnicodeObject *p = ...whatever...;
callsomefun((PyObject*)p);

可以将所有各种具体的具体类型PyWhateverObject视为“派生自”PyObject。现在C没有继承的概念所以它没有“派生”,但是Python VM通过确保每个这样的对象的第一个结构成员(或第一个成员的第一个成员,或者......)是非常简单地合成它PyObject struct(有一个宏)。这保证了指针的正常C转换(虽然技术上“冒险”,因为编译器无法检查正确性 - 如果你输错了东西,你只会在运行时崩溃;-)在指向PyObject的指针之间正确使用时按预期工作以及指向特定的具体Python类型结构的任何指针。

答案 1 :(得分:2)

PyUnicodeObjectPyObject的子集,因此传递它不会有任何问题。