gpt4 book ai didi

python - 为什么 `object` 是 `type` 的实例,而 `type` 是 `object` 的实例?

转载 作者:太空狗 更新时间:2023-10-29 18:34:42 26 4
gpt4 key购买 nike

我对 Python 3 中的 objecttype 类有点困惑。也许有人可以消除我的困惑或提供一些额外的信息。

我目前的理解是,每个类(object 除外)都继承自一个名为object 的基类。但是每一个类(包括object)也是类type的一个实例,它是它自己和object的一个实例,也是继承自对象

我的问题是:

  • objecttype 的实例并且 type 继承自 object< 是否有原因/设计决定?一个对象的type/class 是否也是一个对象本身?

  • 类 (type) 如何成为其自身的实例?

  • object or type 哪个才是真正的基类?
    我一直认为object会是最“基础”的类,但它似乎是type的实例,它是object的实例,它是 type 的实例,...这个递归在哪里结束?

  • 有没有可能说明objecttype类之间的关系?

我尝试在 Python 标准库的文档中查找 objecttype 的条目。

每个类(对象除外)都继承自对象。

>>> for x in object, int, float, str, list, dict:
... print(f'{x.__name__:6}: {x.__bases__}')
...
object: ()
int : (<class 'object'>,)
float : (<class 'object'>,)
str : (<class 'object'>,)
list : (<class 'object'>,)
dict : (<class 'object'>,)

每个类都是 type 类的一个实例。

>>> for x in object, int, float, str, list, dict:
... print(f'{x.__name__:6}: {x.__class__}')
...
object: <class 'type'>
int : <class 'type'>
float : <class 'type'>
str : <class 'type'>
list : <class 'type'>
dict : <class 'type'>

type 是其自身的一个实例。

>>> type.__class__
<class 'type'>

type 也继承自 object

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

还有

>>> isinstance(object, type)
True
>>> isinstance(type, object)
True
>>> isinstance(type, type)
True
>>> isinstance(object, object)
True
>>> issubclass(type, object)
True
>>> issubclass(object, type)
False

最佳答案

您所有问题的答案都可以在本书中找到:Python Types and Objects

更新:another link to the book .如果它也死了,请告诉我。

回答问题最重要的部分:

  • 对象的类型/类别是否也必须是对象本身?

是的,根据第 1 章的规则 1:

“一切皆对象……我们定义的任何类都是对象,当然,这些类的实例也是对象。”

  • 哪个是真正的基类 objecttype

来自第 2 章:

“这两个对象在 Python 中是原始对象。我们不妨一次引入一个,但这会导致先有鸡还是先有蛋的问题——先引入哪个?这两个对象是相互依赖的——它们不能立于不败之地他们自己的,因为它们是根据彼此定义的。”

Luciano Ramalho 在他的书“Fluent Python”中也说这种关系不能用 Python 表达(第 21 章):

“类对象和类型有一个独特的关系:对象是一个类型的实例,类型是对象的子类。这种关系是“魔法”:它不能用 Python 表达,因为任何一个类都会必须先存在,然后才能定义另一个。类型是的事实它自身的一个实例也是神奇的。”

所以,对于你的问题:

  • 类(类型)如何成为其自身的实例?

Luciano 说它也不能用 Python 表达。

  • 是否有可能说明对象和类型类之间的关系?

非常感谢在第 3 章制作此插图的作者:

relation between object, type and other classes

关于python - 为什么 `object` 是 `type` 的实例,而 `type` 是 `object` 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55775218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com