元类编程

使用type创建类

动态创建测试用例类

TestCase = type("FunctionTestCase", (unittest.TestCase,), dict())

metaclass

https://docs.python.org/zh-cn/3.10/reference/datamodel.html#metaclasses

通常情况下,类是用来创建对象的模板,而元类则是用来创建类本身的模板。换句话说,元类控制着类的创建过程,可以在类定义时执行额外的操作,如修改类的行为、添加或移除属性和方法等。

使用案例:

  • django/forms/models.py ModelForm

  • sqlmodel SQLModel

网上的博客: https://www.jianshu.com/p/224ffcb8e73e

备注

重要概念: 元类能修改子类的行为,普通的继承关系不能这样做

参见

一个典型的案例是Django的Model, 里面就有用metaclass