python 定义上下文管理器类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 定义上下文管理器类相关的知识,希望对你有一定的参考价值。

class DBConnection(object):
    def __init__(self, address):
        self.crappy_db = CrappyDBConnection(address)
    
    def __enter__(self):
        self.crappy_db.connect()
        return self  # what is returned here will be availabe via "as"
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_type == ConnectionError:
            logging.exception('Connection dropped')
            self.crappy_db.cleanup('rollback')
        else:
            self.crappy_db.cleanup('commit')
        self.creappy_db.disconnect()
    
    def more_awesome_methods(self):
        ...


# THIS
with DBConnection('127.0.0.1') as db:
    ...


# INSTEAD OF
db = CrappyDBConnection('127.0.0.1')
try:
    db.connect()
    ...
except ConnectionError:
    logging.exception('Connection dropped')
    db.cleanup('rollback')
else:
    db.cleanup('commit')
finally:
    db.disconnect()

以上是关于python 定义上下文管理器类的主要内容,如果未能解决你的问题,请参考以下文章

Python上下文管理器的使用

Python 多处理管理器类对象线程/进程安全

在没有屏幕管理器类的情况下在 Python 中更改屏幕

如何覆盖自定义管理器类中的 .update() 方法

Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )

python 定义上下文管理器生成器