gpt4 book ai didi

python - 为什么 "type"不在 "int"的 MRO 中?

转载 作者:行者123 更新时间:2023-12-04 01:15:15 25 4
gpt4 key购买 nike

根据我的理解,int.mro()的第二个元素应该是 <class 'type'> ,因为这是 int.__class__ 的输出.而是int.mro()给出 [<class 'int'>, <class 'object'>] .如何实现?

最佳答案

查看 int.mro()向您展示 int 的继承树类,而不是 type创建 int 的元类类,因此为什么<class 'type'>不应该在 int.mro() .当元类创建类对象时,它还会构建 __mro__ .

相反,__class__是对实例类型 的引用,向您显示类实例所属的类。在这种情况下,类 int属于元类 type .正是出于这个原因,x.__class__type(x)相同对于大多数用例。

您可以在以下示例中看到它们之间的关系:

print(int.__class__)
> <class 'type'>

print(int.mro())
> [<class 'int'>, <class 'object'>]

print(int.__class__.__mro__)
> [<class 'type'>, <class 'object'>]

print(int().__class__)
> <class 'int'>

此外,您可以在您可以构造的最简单的类示例中看到这种关系:

class A:
pass

obj = A()

print(A.mro())
> [<class '__main__.A'>, <class 'object'>]

print(A.__class__)
> <class 'type'>

关于python - 为什么 "type"不在 "int"的 MRO 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63572818/

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