Python 为什么“object”是“type”的实例,“type”是“object”的实例?

Python 为什么“object”是“type”的实例,“type”是“object”的实例?,python,python-3.x,oop,object,metaprogramming,Python,Python 3.x,Oop,Object,Metaprogramming,我对Python3中的对象和类型类有点困惑。也许有人可以澄清我的困惑或提供一些额外的信息 我目前的理解是,每个类(除了对象)都从名为对象的基类继承。但是每个类(包括对象)也是类类型的一个实例,它是自身和对象的一个实例,也继承自对象 我的问题是: 为什么对象是类型的实例,并且类型继承自对象?对象的类型/类本身也是对象吗 类(类型)如何成为自身的实例 哪个是真正的基类对象或类型? 我一直认为对象将是最“基本”的类,但它似乎是类型的一个实例,它是对象的一个实例,它是类型的一个实例。。。 这个递归在哪

我对Python3中的
对象
类型
类有点困惑。也许有人可以澄清我的困惑或提供一些额外的信息

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

我的问题是:

  • 为什么
    对象
    类型
    的实例,并且
    类型
    继承自
    对象
    ?对象的
    类型
    /类本身也是对象吗

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

  • 哪个是真正的基类
    对象
    类型

    我一直认为
    对象
    将是最“基本”的类,但它似乎是
    类型
    的一个实例,它是
    对象
    的一个实例,它是
    类型
    的一个实例。。。 这个递归在哪里结束

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

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

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

>对于对象、int、float、str、list、dict中的x:
...     打印(f'{x.\\\\\\\\\\\\:6}:{x.\\\\\\\\\\\\\\\\\\\\\')
... 
对象:()
内部:(,)
浮动:(,)
str:(,)
名单:(,)
格言:(,)
每个类都是类
类型
的实例

>对于对象、int、float、str、list、dict中的x:
...     打印(f'{x.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
... 
对象:
int:
浮动:
str:
名单:
格言:
type
是其自身的一个实例

>>类型.\uuu类__
类型
也继承自
对象

>>类型。\uuuu__
(,)

>isinstance(对象、类型)
真的
>>>isinstance(类型、对象)
真的
>>>isinstance(类型,类型)
真的
>>>isinstance(对象,对象)
真的
>>issubclass(类型、对象)
真的
>>>issubclass(对象、类型)
假的
是类
对象
的元类,每个类(包括
类型
)都直接或间接地从
对象
继承


如果您需要了解更多有关元类的信息,请点击此处

在本书中可以找到您所有问题的答案:

UPD:。如果它也死了,请告诉我

回答您的问题最重要的部分是:

  • 对象的类型/类是否也必须是对象本身
是的,根据第一章的规则1:

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

  • 哪个是真正的基类
    对象
    类型
第2章:

“这两个对象是Python中的原始对象。我们不妨一次介绍一个,但这会导致鸡和蛋的问题——首先介绍哪一个?这两个对象是相互依存的——它们不能独立存在,因为它们是根据彼此定义的。”

Luciano Ramalho在其著作《流畅的Python》中也指出,这种关系不能用Python表达(第21章):

“类对象和类型具有唯一的关系:对象是 类型的实例,而类型是object的子类。此关系 是“魔法”:它不能用Python表示,因为任何一个类都会 必须先存在,然后才能定义另一个 它本身的一个例子也是神奇的。”

那么,对于你的问题:

  • 类(类型)如何成为自身的实例
Luciano说它也不能用Python来表达

  • 是否有可能说明对象和类型类之间的关系
非常感谢作者在第3章中做出了这一说明:

根据Python,Python中的一切都是一个对象,每个对象都有一个标识、一个类型和一个值

对象
是所有对象的基类,
类型
也是一个对象,因此它是
对象
的实例,对于
对象
本身也是如此。而且
类型
是所有对象类型的基类,因此
对象
的类型是
类型
,而
类型
本身也是如此


这是我的理解,欢迎指出任何错误。

谢谢!这篇文章真的很有帮助。但是从我现在的理解来看:
type
类不是一个“普通”元类,因为它们在实现级别上“作弊”,并且不能在纯Python中复制。遗憾的是,该图像缺少一个箭头,以反映
issubclass(object,object)这一事实
是真的。@切普纳难道你没有忘记,每个类都是它自己的子类,它对于
对象
类不是特别的吗?但是有一个箭头强调
类型
有类型
类型
。只是想知道为什么作为
object
的子类
object
没有得到同样的重视。(也就是说,每个类都有一个父类;
object
是唯一的类,它是它自己的父类。)Cannata的书籍链接似乎已经失效。
object
不是它自己的父类,因为
type
是它自己的类:object是根,它没有父类。它是自身的一个子类,就如同
类C
是自身的一个子类一样<代码>C类
基础为