paramikoを書いてて、毎回close()
するのめんどくさいので、コンテキストマネージャかどうか調べてみました。
コンテキストマネージャとは
with
が使えるオブジェクトのこと
__enter__()
と__exit__()
を持つオブジェクト
paramikoのコンテキストマネージャのクラス
paramiko.util.ClosingContextManager
というクラスが定義されており、このクラスを継承していれば、コンテキストマネージャになる
paramiko.util.ClosingContextManager
class ClosingContextManager(object):
def __enter__(self):
return self
def __exit__(self, type, value, traceback):
self.close()
以下のクラスがコンテキストマネージャになっている
paramiko.channel.Channel
paramiko.client.SSHClient
paramiko.file.BufferedFile
paramiko.proxy.ProxyCommand
paramiko.sftp_client.SFTPClient
paramiko.sftp_handle.SFTPHandle
paramiko.transport.Transport