gpt4 book ai didi

python - Python 中的 `type()` `__class__` 和 `__bases__` 有什么区别?

转载 作者:行者123 更新时间:2023-11-28 17:30:34 24 4
gpt4 key购买 nike

我在 Python 的 REPL 中试过这个:

>>> class Foo:
... def f():{}
...
>>>
>>> type(Foo)
<type 'classobj'>
>>> Foo.__bases__
()
>>> type(type(Foo))
<type 'type'>
>>> type(Foo).__bases__
(<type 'object'>,)

但是,我仍然无法弄清楚“数据类型”在 OOP 中的确切含义。

在 Python 中,我知道一个实例可以通过 .__class__ 获取它的类,一个类可以通过 .__bases__ 获取它的父类。这似乎很容易理解。

但是“类”或 TypeObjecttype 是什么意思? Type Objecttype 是什么意思? Type Object__bases__ 是什么意思? Python 中的 typeclass 有什么区别?

这让我有点困惑。有人对此有想法吗?

最佳答案

理解的关键是认识到 python 中的一切都是对象。此外,从技术上讲,object 不是关键字,它是全局内置的。

This answer is perhaps the best explanation I've ever seen on the topic.我强烈建议阅读整篇文章。它谈了很多关于元类的内容,type 与元类密切相关。

本质上,类的类型是元类。就像 python 中所有新式类都继承自 object 一样,所有元类都继承自 type。这有点令人困惑,因为 python 中的全局 type 用于两个不同的目的。它是一个元类和一个返回对象类型的函数。

一种非常简单的理解方式是元类创建类,就像类创建实例的方式一样。

关于python - Python 中的 `type()` `__class__` 和 `__bases__` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34672078/

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