python - 使用 contextlib.contextmanager 继承

标签 python contextmanager

给定一个类

class SomeClass:
    @contextlib.contextmanager
    def on_connection(self, target_terminal, source_terminal):
        ...
        yield
        ...

你如何继承它?

最佳答案

可以将 contextlib.contextmanager 模式与 with block 结合起来以引入父类(super class)的上下文管理器:

class SomeDerivedClass(SomeClass):
    @contextlib.contextmanager
    def on_connection(self, target_terminal, source_terminal):
        with super().on_connection(target_terminal, source_terminal):
            ...
            try:
                yield
            finally:
                ...

关于python - 使用 contextlib.contextmanager 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713172/

相关文章:

python - pdb有像gdb一样的布局src吗?

python - imaplib.错误 : b'LOGIN failed' when trying to login using imaplib in python

python - 可以有条件地使用 "with"语句吗?

python - 在Python中调用上下文管理器

python - 将字符串拆分为列表,保留重音字符和表情符号,但删除标点符号

python - 无法在 unicode 中打印某些上标

python - 如果我在上一次运行退出后立即重新启动,则 socket.accept() 中的无效参数异常

python - 我可以从 python 上下文管理器中检索 __exit__ 的返回值吗?

python - 如何在上下文管理器中使用线程?

python - 将 Python 上下文管理器放在一起 : a puzzle