【发布时间】:2014-12-07 08:38:38
【问题描述】:
我想知道是否可以使用 Python 的 C-API 进行转换,例如Float -> String,或 Bool -> Int,或 Int -> Bool 等
并非每次转换都有意义,例如 Dict -> List - 很难想象这会是什么样子。
但是,大多数转化确实有意义。
Float -> Int would just round to the nearest integer
Float -> Bool would evaluate True non-zero
Float -> String would give a string representation (but to what precision?)
Float -> Dict probably doesn't make sense
所以我的问题是,有没有办法使用 C-API 强制进行这些类型转换?
我了解 Python 的首选处理方式是在内部处理类型。所以你这样做:
x = 1 + 2.5
而且它足够聪明,知道 Long + Float -> Float
但是,我正在编写一个 Python/C++ 桥,其中有 Long Float Complex Dict 等类型,我希望能够做到:
// initialise a Float object with an object of unknown type
Float myFloat = somePyObjectPointer;
所以用整数初始化它会起作用,字符串“3.14”会起作用,“foo”不会起作用,Dict 不会,等等。
我想将 Python 的机器用于“什么插入什么”,而不是构建大量的 C++ 机器来手动完成。基本原理是 (1) 减少 C++,(2) 如果 CPython 更改了我不想不同步的功能。
【问题讨论】:
标签: python c++ type-conversion python-c-api