微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我将首先解释我想要做什么,然后我的问题是什么。 我有两个用 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?