首页 > 解决方案 > 如果重新实例化,则在 python 中处理类删除

问题描述

我正在编写一个与仪器(A Pico TC08 热电偶阅读器)通信的类,该仪器有一个 C 库。我在初始化类时连接到仪器,并在__init__and__exit__方法中将其删除。

  def __init__(self):
    self.device_handle = tc08.usb_tc08_open_unit()
    assert_pico2000_ok(self.device_handle)

  def __exit__(self, type, value, traceback):
    status = tc08.usb_tc08_close_unit(self.device_handle)
    assert_pico2000_ok(status)

当我使用“instr = PicoTC08()”实例化类并使用 instr.something 使用它的方法时,这非常有用。然而问题是,如果我尝试用这样的东西再次初始化它:

instr = PicoTC08()
instr = PicoTC08()

我收到“picosdk.errors.PicoSDKCtypesError:不成功的 API 调用”错误。如何确保第一个实例__exit__在第二个实例初始化之前通过某种方法或其他方法关闭与仪器的连接?

标签: pythonclassgarbage-collectioninitialization

解决方案


推荐阅读