Мне нужно открыть файл-подобный объект в python (это последовательное соединение через / dev /), а затем закрыть его. Это делается несколько раз в нескольких методах моего класса. Как я это делал, открывал файл в конструкторе, а затем закрывал его в деструкторе. Хотя я получаю странные ошибки и думаю, что это связано с сборщиком мусора и тому подобным, я до сих пор не привык точно не знать, когда удаляются мои объекты = \
Причина, по которой я это делал, заключается в том, что мне приходится использовать tcsetattr
с кучей параметров каждый раз, когда я открываю его, и это раздражает, когда я все это делаю повсюду. Поэтому я хочу реализовать внутренний класс для обработки всего этого, чтобы я мог использовать его, делая
with Meter('/dev/ttyS2') as m:
Я искал онлайн и не смог найти действительно хороший ответ о том, как реализован синтаксис with
. Я видел, что он использует методы __enter__(self)
и __exit(self)__
. Но все ли мне нужно для реализации этих методов, и я могу использовать синтаксис with? Или есть что-то еще?
Есть ли пример того, как это сделать, или некоторая документация о том, как это реализовано на файловых объектах, на которые я могу посмотреть?