gpt4 book ai didi

python - 如何通过 Swig 创建 Python 类的别名?

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:51 24 4
gpt4 key购买 nike

我创建了一个 C++ 库,并成功地使用 swig 使其可以通过 python 访问。模板在库中大量使用,每个模板类型都通过 swig 映射到它自己的 python 类,如下所示:

%template(Imageint) Image<int>;
%template(Imagedouble) Image<double>;

但是,我真的很想有一个 python 使用的“默认”模板

a = Image("filename")

实例化 Image<double>不必总是打字

a = Imagedouble("filename")

Swig 文档说明:

The %template directive should not be used to wrap the same template instantiation more than once in the same scope. This will generate an error. This error is caused because the template expansion results in two identical classes with the same name. This generates a symbol table conflict. Besides, it probably more efficient to only wrap a specific instantiation only once in order to reduce the potential for code bloat.

所以为了避免符号表冲突,我尝试了

%rename(Image) Image<double>;
%template(Imageint) Image<int>;
%template(Imagedouble) Image<double>;

在接口(interface)文件中。然而,swig 然后提示 Image 被重新定义。

制作别名的最佳方法是什么,这样 Image 和 Imagedouble 都引用 C++ Image<double> ?非常感谢您提供的任何帮助。

-乔希

最佳答案

如果这对以后的人有帮助,执行上述操作的方法是将以下内容添加到接口(interface)文件中:

%pythoncode %{
Image = Imagedouble
%}

我没有意识到有一种方法可以在接口(interface)文件中编写标准的 python 代码。

关于python - 如何通过 Swig 创建 Python 类的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com