如何从C++创建Python Decimal对象
How do I create a Python Decimal object from C++?
。。。或可导入库中存在的任何Python对象。我在文档中找到了PyDateTime_*函数,用于从datetime模块创建对象,但我找不到任何与python十进制模块有关的函数。这可能吗?
如果有Boost.Python方式的话,寻找它,但如果没有,原生API就足够了。
在Boost.Python中,这将类似于
bp::object decimal = bp::import("decimal").attr("Decimal");
bp::object decimal_obj = decimal(1, 4);
应该足够简单。尽管未经测试,但以下内容应该有效:
PyObject * decimal_mod = PyImport_ImportModule("decimal");
assert(decimal_mod);
PyObject * decimal_ctor = PyObject_GetAttrString(decimal_mod, "Decimal");
assert(decimal_ctor);
PyObject * four = PyObject_CallFunction(decimal_ctor, "i", 4);
assert(four);
请记住,这里的所有三个PyObject *
引用都应该在使用完后被递减(使用Py_DECREF()
)。此外,我在这里使用assert()
用于教学目的。实际的代码应该有真正的错误处理。
此外,我在这里使用原始的Python/C API。我从未使用过boost python,所以我不知道存在什么差异(如果有的话)。
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- 如何从C++创建Python Decimal对象