如何将python包装添加到已经swig包装的C++;班

如何将python包装添加到已经swig包装的C++;班,python,c++,swig,word-wrap,Python,C++,Swig,Word Wrap,我在C++中有一个简单的用户定义的StringList类。它的底层容器是std::vector 在python中使用此类时,只要python包装的对象返回任何StringList对象,就可以方便地将其转换为python列表 StringList类确实包含一个函数,getContainer(),该函数返回对底层vector对象的引用,我认为这个函数可以以某种方式使用 例如,C++代码 Raven aRaven; StringList molecules; molecules = aRaven.ge

我在
C++
中有一个简单的用户定义的StringList类。它的底层容器是std::vector

在python中使用此类时,只要python包装的对象返回任何
StringList
对象,就可以方便地将其转换为python列表

StringList类确实包含一个函数,
getContainer()
,该函数返回对底层
vector
对象的引用,我认为这个函数可以以某种方式使用

例如,C++代码

Raven aRaven;
StringList molecules;
molecules = aRaven.getMoleculesInDB();
用分子名称(字符串)列表填充分子对象

在Python中,如下所示,包括循环列表的代码:

aRaven = Raven()
molecules = aRaven.getMoleculesInDB()

print 'There are ' + `molecules.count()` +' available.' 
for mol in range(molecules.count()):
    molName = molecules.at(mol)                
...
最好不要在aRaven.getMoleculesInDb()中创建StringList对象,而是使用字符串(从底层std::vector容器)创建Python列表。然后用户就可以写了

aRaven = Raven()
molecules = aRaven.getMoleculesInDB() # <--- Returns a Python list of strings

for molName in molecules:
    print 'molName'
...
aRaven=Raven()

molecles=aRaven.getmoleclesindb()#您的意思是将其转换为Python列表吗?关于Python C++交互的哪一部分,我还不清楚100%——Python调用C++或其他方法。这将澄清一些事情。我用一些代码更新了这个问题,显示了我试图实现的目标。您不需要将其转换为python列表来获得该行为,实现迭代器协议就足够了。我的答案是:为你覆盖它吗?