什么可以从元类实例化
What Can be instantiation from a Metaclass
class 从 metaclass 实例化可以做什么?据我了解,通常像__init__
、__del__
、__call__
这样的方法来自默认的metaclass type
。这是正确的吗?
不谈继承,谈实例化。 Class 与其 metaclass 的关联方式与实例与其基础 class 的关联方式相同。 Class 是 metaclass.
的实例
特别是定义在 metaclass 上的每个字段都可以从 class 作为 "metaclass field" 访问。因此,如果一个 metaclass 用于多个 classes,则 metaclass 上的字段将在这些 classes 之间共享。
请注意,metaclass 上的 __init__
与 class 上的 __init__
不同。这些是无关的。 __call__
也变成了新的 "constructor"。看看这个:
>>> class Meta(type):
... def __call__(self):
... return 1
>>> class Foo(metaclass=Meta):
... pass
>>> Foo()
1
class 从 metaclass 实例化可以做什么?据我了解,通常像__init__
、__del__
、__call__
这样的方法来自默认的metaclass type
。这是正确的吗?
不谈继承,谈实例化。 Class 与其 metaclass 的关联方式与实例与其基础 class 的关联方式相同。 Class 是 metaclass.
的实例特别是定义在 metaclass 上的每个字段都可以从 class 作为 "metaclass field" 访问。因此,如果一个 metaclass 用于多个 classes,则 metaclass 上的字段将在这些 classes 之间共享。
请注意,metaclass 上的 __init__
与 class 上的 __init__
不同。这些是无关的。 __call__
也变成了新的 "constructor"。看看这个:
>>> class Meta(type):
... def __call__(self):
... return 1
>>> class Foo(metaclass=Meta):
... pass
>>> Foo()
1