什么可以从元类实例化

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 是的。

以上是关于什么可以从元类实例化的主要内容,如果未能解决你的问题,请参考以下文章

python 3.2插件工厂:从类/元类实例化

学习日记0827异常处理 元类 自定义元类 自定义元类来实例化类 属性查找顺序

Python-元类 单例

python元类深入解析

面向对象--元类

python 的元类