如何在SWIG中使用%pythonappend和%pythonprepend访问参数和返回值?

1 投票
1 回答
834 浏览
提问于 2025-04-18 14:57

SWIG的文档中关于%pythonappend%pythonprepend的说明太简单了。我想知道在这些Python代码块中,怎么获取返回值和输入参数。例如,这里有一个来自SWIG文档的例子:

%module example

// Add python code to bar() 

%pythonprepend Foo::bar(int) %{
   #do something before C++ call
%}

%pythonappend Foo::bar(int) %{
   #do something after C++ call
%}


class Foo {
public:
    int bar(int x);
}

那么,怎么打印输入参数xbar的返回值呢?谢谢!

1 个回答

2

获取输入参数:

print(args)

获取返回值:

print(val)

警告:我通过查看生成的 .py 文件得到了这个答案。不幸的是,目前似乎没有官方支持来访问参数和返回值。这个方法在未来的 swig 版本中可能会导致你的代码出现问题。

撰写回答