Python 3类型既是对象又是类?

时间:2018-09-20 16:08:46

标签: python metaclass

我正在阅读学习python 。关于元类,这本书说类型是一个对象,它本身也是类。我正在尝试在线搜索python doc,但是没有看到任何类似的描述。有人可以给我指出任何官方文件吗?

对此声明多考虑一下,类型既是对象又是类,我认为这是有道理的。

原因如下。

  1. 类型是可调用的,看到type()。那么它应该是已实现 call
  2. 的函数或对象
  3. 任何对象都是从类实例化的。鉴于它位于最高层次结构中,因此它的类本身就是有意义的。

我的第二个问题是元类是类型类的子类?元类还是对象/类类型的实例还是真的吗?因为当调用Metaclass(...)时,将调用type。 call ,那么Metaclass必须是类型为

的实例。

1 个答案:

答案 0 :(得分:1)

type即使是可调用的,也有两种完全不同的用法。带有一个参数type返回一个objecdt的类,带有三个参数的type产生一个 一个新类,该类本身是对象的对象。类type

当然,根据这种逻辑,type本身可以是另一个类的实例,而该类是另一个类的实例。但这必须在某个地方停止。设计的选择是到此为止。没有元元类。 type(type)返回type。这是魔术,因为它不遵循任何逻辑规则,而是专门实现的。