metaclass在框架设计中的应用?abc.ABCMeta?metaclass在框架设计中的应用?abc.ABCMeta?
Metaclass 是「类的类」:类由 type 或其子类实例化得到,该子类即 metaclass。定义类时指定 metaclass=MyMeta,则类对象的创建由 MyMeta.__new__/__init__ 控制,可在类创建时注册、校验、注入属性或改继承关系,实现框架级行为。
插件/注册:metaclass 在类定义时把类注册到全局表。接口约束:要求子类实现某些方法,未实现则在类创建时报错。abc.ABCMeta:抽象基类用 ABCMeta 作为 metaclass,配合 @abstractmethod,子类未实现抽象方法则无法实例化。ORM/声明式 API:类属性(如列名)在 metaclass 里被收集成 schema。
from abc import ABC, abstractmethod;继承 ABC(其 metaclass 为 ABCMeta)并给方法加 @abstractmethod,则子类必须实现这些方法否则不能实例化。ABCMeta 还支持 register 做结构性子类型(duck typing 注册)。
| 返回模块 | 返回总览 |