什么可以从元类实例化

时间:2016-11-17 10:57:05

标签: python oop metaclass

来自元类的类实例化有什么用?据我了解,通常__init____del____call__等方法来自默认元类type。这是对的吗?

1 个答案:

答案 0 :(得分:4)

我们不应该谈论继承而是实例化。类与其元类相关的方式与实例与其基类的相关方式相同。 Class是元类的实例。

特别是在元类上定义的每个字段都可以作为"元类字段"从类中访问。因此,如果一个元类用于多个类,那么元类上的字段将在这些类之间共享。

请注意,元类上的__init__与类上的__init__不同。这些是无关的。此外,__call__成为新的"构造函数"。看看这个:

>>> class Meta(type):
...     def __call__(self):
...         return 1

>>> class Foo(metaclass=Meta):
...     pass

>>> Foo()
1