【发布时间】:2011-09-09 12:55:28
【问题描述】:
在 C++ 中,我向 Python 公开(使用 Boost)以下两个类:
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 现在有一些 Foo,但它不知道也不关心它们来自 Python。应用程序运行了一段时间,Foo 对象中的数据发生了变化……
然后我决定要保存程序的状态,以便以后加载它。但问题是 FooContainer 对它的 Foo 对象知之甚少,它甚至不知道它们来自 Python,而且我不想用不属于它的数据污染我的 FooContainer(单-责任原则等等)。
您对我应该如何组织我的应用程序,以便以清晰的方式保存和加载数据以及加载新数据(即不是从我过去保存的状态)有什么建议吗?
【问题讨论】:
标签: c++ python scripting embedding boost-python