用对象模拟多个对象的python

2024-09-30 00:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要这种行为:

with Obj(param=1):
    with Obj(param=2):
        print(...)

使用单个对象:

with UnifyingObj():
    print(...)

我想知道如何安全地实现UnifyingObj

这必须是一个单独的类。我试着这样做:

class _DualWith:
    def __init__(self):
        self._with1 = Obj(param=1)
        self._with2 = Obj(param=2)

    def __enter__(self):
        self._with1.__enter__()
        self._with2.__enter__()

    def __exit__(self, *args, **kwargs):
        self._with2.__exit__(*args, **kwargs)
        self._with1.__exit__(*args, **kwargs)

但我不认为这是完全安全的


Tags: 对象selfobjparamdefwithexitargs
1条回答
网友
1楼 · 发布于 2024-09-30 00:33:40

你需要在一个单独的类中包装这个行为吗?也许你可以这样做?你知道吗

from contextlib import ExitStack


with ExitStack as stack:
    objects = [stack.enter_context(obj) for obj in [Obj(param=1), Obj(param=2)]]

相关问题 更多 >

    热门问题