我有一个对象foo
,其中包含__enter__
和__exit__
方法。
现在,我需要在foo
中将list
的多个实例存储在另一个对象bar
上,并希望bar
也可以进行上下文管理。< / p>
如何正确创建和附加foo
?以下似乎很可疑:
def blub(self):
f = foo(args)
f.__enter__()
self.mylist.append(f)
如何处理foo.__enter__()
的返回对象?
如何在__exit__
中实施bar
以便正确委派?
根据要求,open
替换foo
。
class bar:
def __init__(self, path):
self.mylist = list()
def __enter__(self):
return self
def blub(self, path):
f = open(path, "w")
f.__enter__() # What to do with the object returned?
self.mylist.append(f)
def __exit__(self, type, value, traceback):
pass # How do I delegate __exit__ to all instances in mylist and handle exceptions?