如何生成嵌套的WITH语句?示例:

with patch.object(getattr("module1", "cls1"), "foo"):
  with patch.object(getattr("module2", "cls2"), "foo"):
    with patch.object(getattr("module3", "cls3"), "foo"):
      # do something

如果我有一个需要放入嵌套的with个语句中的项的列表,例如

list=[("module1", "cls1"), ("module2", "cls2"), ("module3", "cls3")]

我如何才能模拟上面的代码?

推荐答案

这看起来像是contextlib.ExitStack的任务,文档中给出了以下示例

with ExitStack() as stack:
    files = [stack.enter_context(open(fname)) for fname in filenames]
    # All opened files will automatically be closed at the end of
    # the with statement, even if attempts to open files later
    # in the list raise an exception

Python相关问答推荐

判断Python操作:如何从字面上得到所有decorator ?

按条件添加小计列

你能把函数的返回类型用作其他地方的类型吗?'

我可以不带视频系统的pygame,只用于游戏手柄输入吗?''

查找数据帧的给定列中是否存在特定值

对当前的鼹鼠进行编码,并且我的按键获得了注册

在使用ROLING()获得最大值时,是否可以排除每个窗口中的前n个值?

如何在Python中画一个只能在对角线内裁剪的圆?

将多行数据循环到嵌套框架中的单行

日志(log)轴上的自定义刻度出现意外的次要刻度标记行为

为什么for循环中会有范围错误?

在动态创建带有图像的按钮时遇到问题

优化将索引分配给极轴上的拆分数据组

使用Python清除Excel中的内容

如何分解在某些行中为空,但在其他行中填充的pandas框架

在python中使用beta.rvs生成矩阵的最快方法

在TKinter中将列表显示为多行标签

在多级列中,对特定较低级别的类别重新排序

Python字符串包含不能与方括号一起使用

导入错误:无法导入PerfetoLibrary