回答
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. TensorFlow:有没有办法将无类型的列表转换为张量?
- 5. 有没有办法将列表变量转换为非列表变量?
- 6. 转换为变量类型
- 7. 如何将PyObject转换为java布尔类型
- 8. 没有额外的方法转换为可空类型
- 9. 将变量值转换为新方法
- 10. 有没有一种有效的方法将Bundle转换为ContentValues?
- 11. SAS变量没有类型
- 12. 有没有办法为extern类型定义变量
- 13. 将具有2个变量的方法转换为一个变量
- 14. 将所有POST变量转换为htmlspecialchars
- 15. 有没有办法将变量类型绑定到列数据类型?
- 16. 在TypeScript泛型方法中将变量转换为T?
- 17. Java:有没有办法将文本转换为类?
- 18. 有没有办法将函数变量转换为D中的字符串?
- 19. 有没有办法将多个变量声明转换为每行一个?
- 20. 有没有简单的方法将值转换为字符串?
- 21. 有没有简单的方法将标准转换为HQL?
- 22. 有没有一种方法可以将网页转换为pdf?
- 23. 有没有将Collection转换为F#序列的安全方法?
- 24. scala中有没有将任何Map转换为java.util.Map的方法?
- 25. 有没有“正确的”方法将django.db.models.query.ValuesListQuerySet转换为纯List?
- 26. 将PHP变量转换为Javascript变量具有转义字符
- 27. 方法''没有支持转换为SQL
- 28. 有没有办法将SearchQuerySet转换为object.filter返回的类型? -Django
- 29. 有没有办法将这个枚举转换为正确的类型
- 30. 有没有办法将模板类型转换为shared_ptr <T>?
...除了当然C编译器不可能知道(没有子集,子类,继承等的概念),所以你需要一个强制转换(指向指针强制转换的指针),正如我在我的答案中解释的那样。 – 2010-05-15 14:19:17