Python でファイルのようなオブジェクト (/dev/ を介したシリアル接続) を開き、それを閉じる必要があります。これは、私のクラスのいくつかのメソッドで数回行われます。私がやっていた方法は、コンストラクタでファイルを開き、デストラクタでファイルを閉じることでした。私は奇妙なエラーが発生していますが、それはガベージコレクターなどに関係していると思います.オブジェクトがいつ削除されているのか正確にわからないことにまだ慣れていません=\
私がこれを行っていた理由はtcsetattr
、それを開くたびにたくさんのパラメーターを使用する必要があり、そのすべてをあちこちで行うのが面倒だからです。だから私はそれをすべて処理するために内部クラスを実装したいので、それを使用することができます
with Meter('/dev/ttyS2') as m:
私はオンラインで探していましたが、with
構文がどのように実装されているかについて本当に良い答えを見つけることができませんでした. __enter__(self)
メソッドとメソッドを使用していることがわかりました__exit(self)__
。しかし、これらのメソッドを実装する必要があり、 with 構文を使用できますか? それともそれ以上のものがありますか?
これを行う方法の例、またはファイルオブジェクトに既に実装されている方法に関するドキュメントがありますか?