【发布时间】:2023-03-26 21:13:01
【问题描述】:
我想用 boost::python 做一些非常简单的事情。我可以找到类成员函数的文档,以及继承类的文档,但我找不到公开通过组合创建的类层次结构的语法。
所以我有一些类似这样的 C++ 代码:
struct A{
double x,y;
};
struct B{
A foo;
double z;
};
我想公开这两个类,以便在 python 中我可以编写如下内容:
spam = A()
spam.x=1
spam.y=2
eggs = B()
eggs.foo=spam
eggs.z = 33
Print eggs.foo.y
肯定有可能吗?但我想不通。
非常感谢!
编辑:
误报...它是自动完成的;如果您使用以下导出代码单独导出每个:
class_<A>("A")
.def_readwrite("x",&A::x)
.def_readwrite("y",&A::y)
;
class_<B>("B")
.def_readwrite("z",&B::z)
.def_readwrite("foo",&B::foo)
;
让我感到震惊的是,您必须在子方法的完整列表通过 dir() 可见之前在 python 下实例化该类,即以下产生不同的结果,并且您必须使用第二种类型来获得完整的成员列表:
dir(B.foo)
dir(B().foo)
显然这里有一些我还不明白的python技术细节......欢迎任何进一步的澄清。
【问题讨论】:
标签: c++ python class boost member