其他分享
首页 > 其他分享> > c-保存复杂的脚本对象的状态

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

作者:互联网

在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