ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c-保存复杂的脚本对象的状态

2019-12-08 00:56:16  阅读:248  来源: 互联网

标签:boost-python embedding scripting python c-4


在C语言中,我有以下两个类(使用Boost)公开给Python

struct Foo {
    // Empty
};

struct FooContainer {
    // I use boost::shared_ptr for compatibility with Boost.Python
    vector<boost::shared_ptr<Foo>> foos_;
};

在Python方面,我可能会创建一种特殊的Foo类型,它实际上会做一些事情,而不仅仅是一个空的类,然后将其添加到FooContainer中:

class Useful(Foo):
    def __init__(self, a, b):
        self.a = a
        self.b = b

x = Useful(3, 5);
# Add 'x' to a `FooContainer`

回到C端,FooContainer现在有一些Foos,但是它并不知道或不在乎它们来自Python.该应用程序运行了一段时间,Foo对象中的数据发生了变化.

然后,我决定要保存程序的状态,以便以后可以加载它.但是问题是FooContainer对它的Foo对象了解不多,甚至不知道它们来自Python,而且我也不想用不真正属于它的数据来污染我的FooContainer.责任原则等).

您对我应该如何组织我的应用程序有任何建议,以便可以清楚地完成保存和加载数据以及加载新数据(即不是从我过去保存的状态)?

解决方法:

您可以使用boost::python/pickle,并从python保存数据.我对酸洗套件的经验有限,但是只要您在python派生的类中重写适当的酸洗方法,它就可以工作(请参阅我对this question的回答).

标签:boost-python,embedding,scripting,python,c-4
来源: https://codeday.me/bug/20191208/2087814.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有