我有一个类,它具有初始化和清理逻辑:
class Bird(object):
def __init__(self, name):
self.name = name
def __enter__(self):
print("enter " + self.name)
return self
def __exit__(self, type, value, traceback):
print("exit " + self.name)
我在上下文管理器中使用它:
with Bird("chicken") as b:
print(b)
但是现在我想使用具有相同行为的对象列表,即在使用list之后,应该处理它的对象:
with DisposableList([Bird("A"), Bird("B")]) as list:
#some ops
我如何实现列表或可能是另一种解决方案?
最佳答案 如果你不需要上课
from contextlib import contextmanager
@contextmanager
def bird(lst):
print 'enter {}'.format(lst)
yield lst
print 'exit {}'.format(lst)
with bird([1,2,3,4]) as f:
print f
enter [1, 2, 3, 4]
[1, 2, 3, 4]
exit [1, 2, 3, 4]