Python swig:如何将上下文管理器方法添加到不透明句柄?

Python swig:如何将上下文管理器方法添加到不透明句柄?,python,swig,Python,Swig,当刷不透明句柄(在我的例子中是指向某个库内部结构的指针)时,我们如何添加上下文管理器方法 为什么我必须编造一些虚假的东西来通过一些愚蠢的质量过滤器,而这些过滤器并没有告诉我出了什么问题?最后没那么难,但也许这可以节省一些时间和挫折感 插入一个代理类“Product”,禁用构造函数(由于它是内部的,所以不能执行sizeof)和析构函数,最后添加影子方法: %rename(Product) product_struct; %nodefaultctor product_struct; %nodefau

当刷不透明句柄(在我的例子中是指向某个库内部结构的指针)时,我们如何添加上下文管理器方法


为什么我必须编造一些虚假的东西来通过一些愚蠢的质量过滤器,而这些过滤器并没有告诉我出了什么问题?

最后没那么难,但也许这可以节省一些时间和挫折感

插入一个代理类“Product”,禁用构造函数(由于它是内部的,所以不能执行sizeof)和析构函数,最后添加影子方法:

%rename(Product) product_struct;
%nodefaultctor product_struct;
%nodefaultdtor product_struct;
struct product_struct
{
    %shadow
    %{
        def __enter__(self):
            return self

        def __exit__(self, t, v, t2):
            library.close(self)
    %}
};