Mixin模式
Mixin 即 Mix-in,常被译为“混入”,是一种编程模式,在 Python 等面向对象语言中,通常它是实现了某种功能单元的类,用于被其他子类继承,将功能组合到子类中。
利用 Python 的多重继承,子类可以继承不同功能的 Mixin 类,按需动态组合使用。
当多个类都实现了同一种功能时,这时应该考虑将该功能抽离成 Mixin 类。
例如,实现一个将类转换为字典的功能,由于这个功能的通用性,可以单独抽离成一个Mixin类中实现这个功能。
上下文管理器
一个实现了__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__方法会被自动调用,记录执行时间



