首页 Python 学习笔记 - Mixin模式和上下文管理器
文章
取消

Python 学习笔记 - Mixin模式和上下文管理器

Mixin模式

Mixin 即 Mix-in,常被译为“混入”,是一种编程模式,在 Python 等面向对象语言中,通常它是实现了某种功能单元的类,用于被其他子类继承,将功能组合到子类中。

利用 Python 的多重继承,子类可以继承不同功能的 Mixin 类,按需动态组合使用。

当多个类都实现了同一种功能时,这时应该考虑将该功能抽离成 Mixin 类。

例如,实现一个将类转换为字典的功能,由于这个功能的通用性,可以单独抽离成一个Mixin类中实现这个功能。

Mixin模式 Mixin模式2 Mixin模式3 Mixin模式4

上下文管理器

一个实现了__enter__和__exit__方法的类的实例对象,就是一个上下文管理器。上下文管理器可以在with语句中使用。

当使用with语句调用时,会自动调用__enter__方法,进入上下文环境,as语句指定的变量指向__enter__方法的返回的对象。 在with语句块中执行的代码,会自动调用__exit__方法,退出上下文环境。 在__exit__方法中,可以处理异常,确保上下文环境的正确退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import time

class TimerContextManager:
    def __enter__(self):
        self.start_time = time.time()
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        self.end_time = time.time()
        elapsed_time = self.end_time - self.start_time
        print(f"Time elapsed: {elapsed_time} seconds")

with TimerContextManager():
    # 在这个代码块中,TimerContextManager已经被正确进入
    # 代码块执行完毕后,__exit__方法会被自动调用,记录执行时间
本文由作者按照 CC BY 4.0 进行授权