假设我们有一个对象,它旨在与with
一起使用:
with somefunction() as f:
...
f.somemethod()
现在我想在类中使用它,使对象可用于类实例的完整生命周期。
在构造函数中我会写
class MyClass:
def __init__(self):
self.f = somefunction().__enter__()
我应该在哪里拨打__exit__()
呢?
答案 0 :(得分:0)
如果somefunction
是一个对象,首先我们可以将其命名为someobject
并执行以下操作:
class MyClass(object):
def __init__(self, someobject):
self._someobject = someobject
def dothing(self):
with self._someobject() as so:
so.somemethod()
myinstance = MyClass(someobject)
myinstance.dothing()