Python中的内置类元类

时间:2018-03-13 05:13:59

标签: python metaclass

是否有任何内置的Python类不是type元类的实例?

>>> type(list)
<type 'type'>
>>> type(dict)
<type 'type'>
>>> type(some_builtin_python_class)
<type 'some_type_other_than_type'>

1 个答案:

答案 0 :(得分:4)

取决于你的意思&#34;内置&#34;。如果你的意思是任何C实现的(在CPython中)类暴露为builtins(和builtin),那么不,它们都没有不同的元类。 *

但是stdlib中确实存在类。例如:

>>> type(collections.abc.Iterable)
abc.ABCMeta

澄清:其他元类当然是类型的子类,因此,通过正常的继承规则,isinstance(Iterable, type)仍然如此 - 但type(Iterable) == type不正确}。这是您在问题中要求的内容 - type(T)返回<type 'some_type_other_than_type'>的类型。

*无论如何都不在3.x中。 2.x中的情况有所不同,那里有经典的课程,曾经有过,#34;虚假课程&#34;实际上这些函数看起来像type个实例但不是,并且在调用时返回隐藏type实例的实例。