Когда следует использовать close () и __del __ () в Pyserial? - PullRequest
0 голосов
/ 13 февраля 2019

Согласно документации , класс serial.Serial() имеет следующие методы.

close()
Close port immediately.

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

Я хотел бы знать, когда мне следует использовать close() и __del__()?Например, у меня есть графический интерфейс, который создал экземпляр serial.Serial() с назначенным портом.Согласно документации, назначенный порт будет открыт при появлении экземпляра serial.Serial().Теперь, когда я завершаю работу с моим графическим интерфейсом, правильно ли сказать, что __del__() (а не close()) - наиболее подходящий метод для закрытия последовательного порта?

1 Ответ

0 голосов
/ 13 февраля 2019

Анализ

Если мы посмотрим на Писериальный источник , то увидим:

class SerialBase(io.RawIOBase):

Ага!Давайте рассмотрим io.RawIOBase :

Базовый класс для необработанного двоичного ввода-вывода.Наследует IOBase.Общедоступного конструктора нет.

ОК.Ища __del__ в IOBase видим:

__del__() Подготовка к уничтожению объекта.IOBase обеспечивает реализацию этого метода по умолчанию, которая вызывает метод close() экземпляра.

Заключение

Вы можете использовать close() или del или with -контекст - все они закрывают порт.

...