元类(Metaclass)的概念
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 中一切皆对象,类也是对象,由元类创建。