回答
PyUnicodeObject
是PyObject
一个子集所以不应该有它传递任何问题。
你可以只使用一个投在C代码用于此目的:
PyUnicodeObject *p = ...whatever...;
callsomefun((PyObject*)p);
所有的各种具体,具体类型PyWhateverObject
可以被看作是的PyObject“源自”。现在C确实有继承的概念,所以它没有“派生”的概念,但是Python虚拟机非常简单地合成它,通过确保每个这样的对象的内存布局“开始于”一个头,这个头与一个PyObject
结构是完全对应的有一个宏)。这保证了指针的正常C转换(虽然技术上“风险”,因为编译器无法检查正确性 - 如果你投错了东西,你只会在运行时崩溃;-)在指向PyObject的指针以及指向具体的具体Python类型结构的指针。
联系我电话 PyUnicodeObject类型 - > PyBytesObject类型 PyUnicodeObject * p = ... whatever ...; callafun((PyByteObject *)p); 出现总线错误。 – dizgam 2010-05-15 14:21:05
@kamol,'PyUnicodeObject'和'PyBytesObject'中的每一个都是'PyObject'的_separate_“概念子类”,所以演员阵容不会在那里工作(而且这不是**你在Q中提出的问题,所以我建议你编辑它以涵盖你的**真实**问题)。有关您当前非常具体且完全不同的问题,请参阅http://docs.python.org/py3k/c-api/unicode.html#PyUnicode_Encode(并确保为您创建的字节对象使用本地变量在调用完成之后,必须将其递减,除非你所调用的函数是一个很少见的函数,它可以引用_steals_)。 – 2010-05-15 14:41:15
- 1. 若要将PyBytesObject类型转换为python3中的PyUnicodeObject类型
- 2. 有没有简单的方法将C#类转换为PHP?
- 3. 无法将类型变量(Null)转换为类型(OleStr)
- 4. 有没有办法将列表变量转换为非列表变量?
- 5. TensorFlow:有没有办法将无类型的列表转换为张量?
- 6. 转换为变量类型
- 7. 如何将PyObject转换为java布尔类型
- 8. 没有额外的方法转换为可空类型
- 9. 有没有一种有效的方法将Bundle转换为ContentValues?
- 10. 将具有2个变量的方法转换为一个变量
- 11. 将所有POST变量转换为htmlspecialchars
- 12. 有没有办法将变量类型绑定到列数据类型?
- 13. 在TypeScript泛型方法中将变量转换为T?
- 14. 将PHP变量转换为Javascript变量具有转义字符
- 15. Java:有没有办法将文本转换为类?
- 16. scala中有没有将任何Map转换为java.util.Map的方法?
- 17. 有没有简单的方法将值转换为字符串?
- 18. 有没有一种方法可以将网页转换为pdf?
- 19. 有没有简单的方法将标准转换为HQL?
- 20. 有没有办法将SearchQuerySet转换为object.filter返回的类型? -Django
- 21. 有没有办法将模板类型转换为shared_ptr <T>?
- 22. 有没有办法将C++数据类型作为变量返回?
- 23. Fortran变量类型转换
- 24. 使用类型变量转换为Enum
- 25. 将float向量转换为uint32向量的最有效方法?
- 26. 无法将System.String转换为类类型
- 27. 将C++类私有变量转换为公开
- 28. 为什么显式将泛型转换为类类型有限制,但是将泛型转换为接口类型没有限制?
- 29. 有没有办法将MVC 3模型转换为Knockout View模型
- 30. 将分类变量转换为数字
...除了当然C编译器不可能知道(没有子集,子类,继承等的概念),所以你需要一个强制转换(指向指针强制转换的指针),正如我在我的答案中解释的那样。 – 2010-05-15 14:19:17