gpt4 book ai didi

python - Python中的类对象和类类型

转载 作者:行者123 更新时间:2023-12-02 01:34:01 24 4
gpt4 key购买 nike

我是 Python 新手,我有一个关于 OOP 的问题。因此,当我们创建一个类时,我们在括号中写入“对象”。例如,

class My(object):

我在某处读到这意味着该类继承自 object Python 中的类。但我也读到,我们创建的每个类都是 type 的一个实例。类(class)。所以我的问题是object类与 type 相同类,如果是,为什么当要求 Python 打印类的类型时,它返回 <class 'type'>而不是<class 'object'> 。另外,为什么我们不能写

class My(type):

如果object类和 type类是相同的吗?

最佳答案

这里有两种关系:实例子类型。对于非编程类比,您可以这样思考差异。 table 上的一个特定苹果是“apple”的一个实例。这是苹果的一个例子,就是那个苹果。另一方面,“苹果”作为一个概念是“水果”的子类型。每个苹果都是一种水果。说你 table 上的特定苹果是任何东西的子类型是不准确的,因为它是一个特定的苹果。说“苹果”的概念是“水果”的一个实例是没有意义的,因为它不是。

你在Python中定义的每个类都是object子类型,它是所有类型的类型。类本身在Python中也是一个对象,它的类型是type。后者可用于执行一些巧妙的元编程,但这是高级 Python,您在现阶段可能不需要搞乱。

class Foo(object):
pass

assert isinstance(Foo, type) # Foo is a type
assert issubclass(Foo, object) # Foo is a subclass of object
assert isinstance(Foo, object) # Every type (and everything in Python) is an object
assert isinstance(Foo(), Foo) # A specific foo is a Foo
assert isinstance(Foo(), object) # A specific foo is an object

目前,当您学习 Python 时,忘记 type 的存在是非常安全的。它奇特而复杂,用于一些非常复杂的元编程技巧。现在,只需使用 object 并假设类是一些神奇的东西,然后学习如何使用它们。一旦你有了坚实的基础,你就可以了解它们如何工作的具体细节。

关于python - Python中的类对象和类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72832657/

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