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

问题描述 投票:1回答:1

根据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())是用于关闭串口的最合适的方法?

python pyserial
1个回答
1
投票

Analysis

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

class SerialBase(io.RawIOBase):

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

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

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

__del__()准备破坏物体。 IOBase提供了此方法的默认实现,该实现调用实例的close()方法。

Conclusion

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

© www.soinside.com 2019 - 2024. All rights reserved.