首页 / PYTHON / python对象到本机c指针
python对象到本机c指针
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python对象到本机c指针,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2116字,纯文字阅读大概需要4分钟。
内容图文
我正在考虑使用python作为一个嵌入式脚本语言的想法,我正在努力的项目,并使大多数工作.但是我似乎无法将python扩展对象转换回本机c指针.
所以这是我的班级:
class CGEGameModeBase
{
public:
virtual void FunctionCall()=0;
virtual const char* StringReturn()=0;
};
class CGEPYGameMode : public CGEGameModeBase, public boost::python::wrapper<CGEPYGameMode>
{
public:
virtual void FunctionCall()
{
if (override f = this->get_override("FunctionCall"))
f();
}
virtual const char* StringReturn()
{
if (override f = this->get_override("StringReturn"))
return f();
return "FAILED TO CALL";
}
};
提升包装:
BOOST_PYTHON_MODULE(GEGameMode)
{
class_<CGEGameModeBase, boost::noncopyable>("CGEGameModeBase", no_init);
class_<CGEPYGameMode, bases<CGEGameModeBase> >("CGEPYGameMode", no_init)
.def("FunctionCall", &CGEPYGameMode::FunctionCall)
.def("StringReturn", &CGEPYGameMode::StringReturn);
}
和python代码:
import GEGameMode
def Ident():
return "Alpha"
def NewGamePlay():
return "NewAlpha"
def NewAlpha():
import GEGameMode
import GEUtil
class Alpha(GEGameMode.CGEPYGameMode):
def __init__(self):
print "Made new Alpha!"
def FunctionCall(self):
GEUtil.Msg("This is function test Alpha!")
def StringReturn(self):
return "This is return test Alpha!"
return Alpha()
现在我可以通过执行以下操作来调用第一个函数:
const char* ident = extract< const char* >( GetLocalDict()["Ident"]() );
const char* newgameplay = extract< const char* >( GetLocalDict()["NewGamePlay"]() );
printf("Loading Script: %s\n", ident);
CGEPYGameMode* m_pGameMode = extract< CGEPYGameMode* >( GetLocalDict()[newgameplay]() );
但是,当我尝试将Alpha类转换回其基类(上面的最后一行)时,我得到一个提升错误:
TypeError: No registered converter was able to extract a C++ pointer to type class CGEPYGameMode from this Python object of type Alpha
我已经在网上做了很多搜索,但无法解决如何将Alpha对象转换为其基类指针.我可以把它作为一个对象,而不是它作为一个指针,所以一些非python意识的代码可以使用它.有任何想法吗?
解决方法:
感谢来自python c mailling列表的Stefan,我失踪了
super(Alpha, self).__init__()
从构造函数调用意味着它从未成为父类.认为这是自动的:D
我只有其他问题是将新的类实例保存为全局var,否则它会在超出范围时被清除.
现在好开心
内容总结
以上是互联网集市为您收集整理的python对象到本机c指针全部内容,希望文章能够帮你解决python对象到本机c指针所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。