如何存储上下文可管理对象

时间:2016-07-13 09:44:15

标签: python python-3.x python-3.5 contextmanager

我有一个对象foo,其中包含__enter____exit__方法。

现在,我需要在foo中将list的多个实例存储在另一个对象bar上,并希望bar也可以进行上下文管理。< / p>

  1. 如何正确创建和附加foo?以下似乎很可疑:

    def blub(self):
        f = foo(args)
        f.__enter__()
        self.mylist.append(f)
    
  2. 如何处理foo.__enter__()的返回对象?

  3. 如何在__exit__中实施bar以便正确委派?

  4. 根据要求,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?
    

0 个答案:

没有答案