P3t*_*rus 8 python destructor with-statement
我如何使用Contextmanager实例变量?我们假设我有一些Connection课程,必须在破坏时关闭.如果我将它作为ContextManager实现,我可以做到.
with Connection() as c:
c.write('FOO')
c.ask('BAR?')
Run Code Online (Sandbox Code Playgroud)
它会在销毁时自动关闭.但是如果我想在__init__另一个类中使用它,例如下面的例子呢?
class Device(object):
def __init__(self):
self.connection = Connection() # Must be closed on destruction.
Run Code Online (Sandbox Code Playgroud)
我不希望它在构造函数的退出时关闭,它应该在对象被破坏时死亡.我可以使用,__del__但这有它的缺点.习惯于在C++中使用RAII它让我感到困惑.
那么在这种情况下,最好的方法是什么?