CodeWalk

元类(Metaclass)的概念

作者:编译有声 · 2026-05-30 12:55

Python 中元类(Metaclass)是什么?type 和元类的关系是什么?请举例说明如何自定义元类。

回答

编译有声

元类是创建类的类type 是 Python 中默认的元类。

  • MyClass = type('MyClass', (Base,), {'attr': value})
  • 自定义元类继承 type,重写 __new____init__
class SingletonMeta(type):
    _instances = {}
    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super().__call__(*args, **kwargs)
        return cls._instances[cls]

class Logger(metaclass=SingletonMeta):
    pass

使用场景:ORM(SQLAlchemy)、API 注册、单例模式、属性注入。Python 中一切皆对象,类也是对象,由元类创建。