gpt4 book ai didi

Python 数据类型与类?

转载 作者:行者123 更新时间:2023-11-28 21:31:49 24 4
gpt4 key购买 nike

bool、int 和 str 是 Python 中的数据类型。

>>> type(True)
<class 'bool'>
>>>

>>> type(2019)
<class 'int'>
>>>

>>> type('Why')
<class 'str'>
>>>

但是当我把这些话放到Python解释器中时,它表明这些实际上是一个类。

>>> bool
<class 'bool'>
>>>

>>> int
<class 'int'>
>>>

>>> str
<class 'str'>
>>>

我一直在四处寻找,但找不到关于这个的答案。由于我在网上找不到答案,我想这里一定有人有答案。

数据类型和类之间的关系是什么?为什么 bool、int 和 str 在 Python 解释器中不生成 data types word?

最佳答案

在 Python 中,一切皆对象。 123 是一个对象,'Hello' 是一个对象,4.5 是一个对象。每个值的内容让 Python 解释器选择正确的类并为该值创建正确的对象。例如,当您输入 123 时,Python 解释器将扫描该值并创建一个 int 类的对象。 bool 值也是如此。

int、str、bool 等类在 Python 的内置命名空间中定义。这意味着,这些类在 Python 环境中随处可用(不依赖于模块,默认情况下您可以访问这些类)。例如,如果您在 Python 解释器中执行以下操作:

class SampleClass:
pass

并调用dir()

您将获得一个列表,其中包含您在当前范围(即全局范围)中定义的所有类、函数和变量。例如,该列表如下所示:

['SampleClass', '__builtin__', '__doc__', ...]

请注意,列表中还有 __builtin____doc__ 等项。这些不是您定义的内容,但默认情况下可用。如果您更进一步并执行以下操作:

dir(__builtin__),您将看到另一个列表,其中包含默认情况下可用的内置类。就像前面列表中的 SampleClass 一样,您可以在此列表中找到所有内置类。

['ArithmeticError', 'AssertionError', 'AttributeError',...,'bool', ... 'int', 'isinstance', 'iter']

现在,如果您对 int 执行 dir,您将看到 int 类中的所有属性,例如:

['__abs__', '__add__', '__and__', '__bool__',...]

正如您在此处看到的,__add__ 是 int 类中的一个方法。这是规定“+”操作行为的方法。当你这样做时,3+4,Python 调用 3 int 对象中的 __add__ 方法来添加一个 4 并返回值。由于 Python 中的这个特性,您可以创建自己的 int 类型并像这样做一些疯狂的事情:

class MyInt(int):
def __add__(self, value):
return self*value

现在,如果您创建一个 MyInt 对象,它基本上会表现得像一个 int,因为它是 int 类的子类,但具有重写的 __add__ 方法。

[In] mi = MyInt(5)
[In] mi-2
[Out] 3
[In] mi+5
[Out] 25

关于Python 数据类型与类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422467/

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