元类编程
使用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