我目前正在学习 python OOP 模型并被告知
type
itself derives fromobject
, andobject
derives fromtype
我知道object
是python 3.x中每个类的默认父类(super class),type
类用于创建类(即类对象)。 object
和 type
一起(以某种方式)构成了 python OOP 的基础,但我仍然对上面的陈述感到困惑。
有人可以详细解释一下object
和type
之间的关系,以及它们在Python OOP中扮演的角色吗?谢谢
最佳答案
我们需要区分子类化和实例化。确切的规则可能因语言而异,但在 Python 3.x 中--
所有类都是object
的子类(当然,除了object
本身)。 object
是类层次结构的根。
type
类是 object
的子类。
所有对象都是类的实例。
类本身就是对象。 (并非所有语言都是如此。)
类对象作为对象,是类的实例——类对象是类type
(默认元类)的实例。
是的,type
是一个类和一个对象,并且它是 type
的实例。 type
具有类 type
。
是的,object
是一个类和一个对象,并且它是一个 type
的实例。 object
具有类 type
。
您可以通过使用 .__class__
或 type()
来查看对象的类。
您可以通过使用 .__mro__
(方法解析顺序)来查看类的父类(super class)。
>>> type(object)
<class 'type'>
>>> type(type)
<class 'type'>
>>> object.__mro__
(<class 'object'>,)
>>> type.__mro__
(<class 'type'>, <class 'object'>)
关于python 3.x, `type` 本身派生自 `object` ,而 `object` 派生自 `type`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771713/