【问题标题】:python 3.x, `type` itself derives from `object`, and `object` derives from `type`python 3.x,`type`本身派生自`object`,`object`派生自`type`
【发布时间】:2019-03-17 05:22:24
【问题描述】:

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

type本身派生自object,而object又派生自type

我知道object 是python 3.x 中每个类的默认超类,type 类用于创建类(即类对象)。 objecttype 一起(不知何故)构成了 python OOP 的基础,但我仍然对上面的陈述感到困惑。

有人可以详细解释objecttype 之间的关系,以及它们在python OOP 中所扮演的角色。谢谢

【问题讨论】:

标签: python python-3.x class oop


【解决方案1】:

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

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

type 类是object子类

所有对象都是一个类的实例

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

类对象,即对象,是类的实例——类对象是类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'>)

【讨论】:

    猜你喜欢
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2018-04-08
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多