何时在Pyserial中使用close()和__del __()?

时间:2019-02-13 07:48:17

标签: python pyserial

根据documentation,类serial.Serial()具有以下方法。

close()
Close port immediately.

__del__()
Destructor, close port when serial port instance is freed.

我想知道何时应该使用close()__del__()?例如,我有一个GUI,它使用分配的端口创建了serial.Serial()的实例。根据文档,当serial.Serial()的实例打开时,分配的端口将打开。现在,当我终止GUI时,我是否正确地说__del__()(而不是close())是关闭串行端口最合适的方法?

1 个答案:

答案 0 :(得分:1)

分析

如果我们查看pyserial source,将会看到:

class SerialBase(io.RawIOBase):

啊哈!让我们来看看io.RawIOBase

  

原始二进制I / O的基类。它继承了IOBase。没有公共构造函数。

好。在__del__中寻找IOBase,我们看到:

  

__del__()   准备销毁对象。 IOBase提供了此方法的默认实现,该方法调用实例的close()方法。

结论

您可以使用close()delwith上下文-它们都关闭端口。