我是靠谱客的博主 玩命大炮,最近开发中收集的这篇文章主要介绍python调用c返回字符串,从暴露给Python的C ++函数返回int或字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Using Boost Python, is it possible for a C++ function exposed to python to return either an integer or a string (or other type) depending on the value of the single argument passed in?

So in Python I want to do this:

from my_module import get_property_value

# get an integer property value

i = get_property_value("some_int_property")

# get a string

s = get_property_value("some_string_property")

C++ pseudo code (obviously won't it work like this, but you get the idea)

???? getPropertyValue(const char* propertyName)

{

Property *p = getProperty(propertyName);

switch(p->type)

{

case INTEGER: return p->as_int();

case STRING: return p->as_string();

...

}

}

BOOST_PYTHON_MODULE(my_module)

{

boost::python::def("get_property_value", &getPropertyValue);

}

If it makes any difference, I'm using Boost 1.48 with Python 3.2.

解决方案

Have the C++ function return a boost::python::object. The object constructor will attempt to

converts its argument to the appropriate python type and manages a reference to it. For example, boost::python::object(42) will return a Python object with a Python type of int.

Here is a basic example:

#include

/// @brief Get value, returning a python object based on the provided type

/// string.

boost::python::object get_value(const std::string& type)

{

using boost::python::object;

if (type == "string") { return object("string 42"); }

else if (type == "int") { return object(42); }

return object(); // None

}

BOOST_PYTHON_MODULE(example)

{

namespace python = boost::python;

python::def("get_value", &get_value);

}

and its usage:

>>> import example

>>> x = example.get_value("string")

>>> x

'string 42'

>>> type(x)

>>> x = example.get_value("int")

>>> x

42

>>> type(x)

>>> x = example.get_value("")

>>> x

>>> type(x)

最后

以上就是玩命大炮为你收集整理的python调用c返回字符串,从暴露给Python的C ++函数返回int或字符串的全部内容,希望文章能够帮你解决python调用c返回字符串,从暴露给Python的C ++函数返回int或字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部