使用Python C-API强制类型转换

使用Python C-API强制类型转换,python,c++,type-conversion,python-c-api,Python,C++,Type Conversion,Python C Api,我想知道是否可以使用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

我想知道是否可以使用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++桥接器,其中有长浮点复杂Dict等类型,我希望能够做到:

// initialise a Float object with an object of unknown type
Float myFloat = somePyObjectPointer; 
所以用一个整数初始化它会起作用,字符串“3.14”会起作用,“foo”不会,Dict不会,等等

我想用Python的机器来“插入什么插件”,而不是用大量的C++机器手工完成。理由是(1)更少的C++,(2)如果cPython改变功能,我不想失去同步。 浮点->整数

浮动->布尔

没有直接转换,但是

浮动->字符串

口述->列表

x=1+2.5

浮动->听写

嗯。。。没有

任何你能关心的事都在里面。。。某处