如何跨不同方法使用相同的上下文管理器?

时间:2017-02-27 15:05:30

标签: python-3.x contextmanager

我正在尝试实现一个使用python context manager的类。

虽然我理解输入退出的一般概念,但我不知道如何在多个代码块中使用相同的上下文管理器。

例如采取以下案例

@contextmanager 
def backupContext(input)
   try:
     return xyz
   finally
     revert (xyz)

class do_something:

   def __init__(self):
         self.context = contextVal

   def doResourceOperation_1():
       with backupContext(self.context) as context:
           do_what_you_want_1(context)

   def doResourceOperation_2():
       with backupContext(self.context) as context:
         do_what_you_want_2(context)

我正在两次调用上下文管理器。假设我只想做一次..在 init 期间并使用相同的上下文管理器对象来完成我的所有操作,最后当对象是删除我想做恢复操作我应该怎么做呢?

我应该手动调用输入退出而不是使用with语句吗?

0 个答案:

没有答案