python 3.x,“类型”本身是从“对象”派生的,而“对象”是从“类型”

时间:2018-10-12 03:17:34

标签: python python-3.x class oop

我目前正在学习python OOP模型,并被告知

  

type本身源自object,而object源自type

我了解到object是python 3.x中每个类的默认超类,并且type类用于创建类(即类对象)。 objecttype一起(以某种方式)构成了python OOP的基础,但是我仍然对上面的陈述感到困惑。

有人可以详细说明objecttype之间的关系,以及他们在python OOP中扮演的角色。谢谢

1 个答案:

答案 0 :(得分:4)

我们需要区分子类和实例化。确切的规则可能因语言而异,但在Python 3.x中-

所有类都是object子类(当然,object本身除外)。 object是类层次结构的根。

type类是object子类

所有对象都是类的 instances

类本身就是对象。 (并非每种语言都是如此。)

作为对象的类对象是类的实例-类对象是类type(默认元类)的实例。

是的,type是类和对象,并且是type实例type的班级为type

是的,object是类和对象,并且是type实例object的班级为type

通过在对象上使用.__class__type()可以看到对象的类。 您可以通过在类上使用.__mro__(方法解析顺序)来查看其超类。

>>> type(object)
<class 'type'>
>>> type(type)
<class 'type'>
>>> object.__mro__
(<class 'object'>,)
>>> type.__mro__
(<class 'type'>, <class 'object'>)