什么可以从元类实例化
Posted
技术标签:
【中文标题】什么可以从元类实例化【英文标题】:What Can be instantiation from a Metaclass 【发布时间】:2017-03-31 21:18:10 【问题描述】:从元类中实例化一个类可以做什么?据我了解,通常__init__
、__del__
、__call__
等方法来自默认元类type
。这是正确的吗?
【问题讨论】:
【参考方案1】:我们不应该谈论继承,而应该谈论实例化。类与其元类的关联方式与实例与其基类的关联方式相同。类是元类的一个实例。
特别是在元类上定义的每个字段都可以作为“元类字段”从类中访问。因此,如果一个元类用于多个类,则元类上的字段将在这些类之间共享。
请注意,元类上的__init__
与类上的__init__
不同。这些是无关的。 __call__
也成为一个新的“构造函数”。看看这个:
>>> class Meta(type):
... def __call__(self):
... return 1
>>> class Foo(metaclass=Meta):
... pass
>>> Foo()
1
【讨论】:
so__init__
__del__
__new__
在默认元类 type
上定义为其元类字段。我说的对吗?
@RavinduShantha 是的。以上是关于什么可以从元类实例化的主要内容,如果未能解决你的问题,请参考以下文章