インスタンス変数に Contextmanager を使用するにはどうすればよいですか? Connection
たとえば、破壊時に閉じなければならないクラスがあると仮定しましょう。それを ContextManager として実装する場合は、実行できます。
with Connection() as c:
c.write('FOO')
c.ask('BAR?')
破壊時に自動的に閉じられます。__init__
しかし、次の例のように、別のクラスで使用したい場合はどうすればよいでしょうか?
class Device(object):
def __init__(self):
self.connection = Connection() # Must be closed on destruction.
コンストラクターの終了時に閉じたくないので、オブジェクトが破棄されたときに終了する必要があります。私は使用できます__del__
が、これには欠点があります。C++ で RAII に慣れていると、困惑します。
では、この場合、どのようにするのが最善の方法でしょうか?