如何上下文管理属于类中的属性的对象?

问题描述

我将首先解释我想要做什么,然后我的问题是什么。 我有两个用 C++ 编写的软件模块,我可以通过自动生成的 python(ctype) 类来连接它们,我可以用它们来初始化和与模块通信。

我正在写的是一个类,其中包含两个自动生成的接口类中的每一个作为属性一个对象。它们在我的类的 init 中初始化。我的班级有一个 step()-method,它调用两个接口对象,准备它们的输入,输入调用它们的 step()-methods 并返回它们的输出,尽管已转换。

我在测试这个类时遇到的问题。当我连续进行多个测试时,我收到一个 FATAL 错误,指出我的一个接口对象已经初始化。

我已经四处寻找解决方案。两个接口类都有 __del__- 和 __exit__- 函数,我认为可以解决这个问题。我知道它们是通过上下文管理来使用的。我发现的这方面的例子例如使用:

with Interface() as interface

但我不知道如何利用它,因为我想在接口的上下文中直到不再使用 MyClass。

我希望这个问题有点清楚,我会尝试在这里重申:我如何管理我班级的两个成员的上下文,同时在我的班级的整个生命周期中使用它们?非常感谢您的回答!

下面是一些简化的代码,用于显示我的类的结构及其内容

 class MyClass(object):
     def __init__(self,data):
         self.data = data
         interface1 = Interface1()  # Interface to C++ modules
         interface2 = Interface2()
 
     def step(self):
         inputs = self.generate_input()
         outputs = interface1.step(inputs)
         inputs = self.generate_inputs()
         outputs = intefrace2.step(inputs)
         return self.convert(outputs)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...