我目前正在学习python OOP模型,并被告知
type
本身源自object
,而object
源自type
我了解到object
是python 3.x中每个类的默认超类,并且type
类用于创建类(即类对象)。 object
和type
一起(以某种方式)构成了python OOP的基础,但是我仍然对上面的陈述感到困惑。
有人可以详细说明object
和type
之间的关系,以及他们在python OOP中扮演的角色。谢谢
答案 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'>)