gpt4 book ai didi

python - NamedTuple,是被视为值的类

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

在下面的代码中:

point=namedtuple('point','x y')

我很困惑,一个类被视为一个值。就像我做的那样:

class point:
...

它在命名空间中创建一个名为 point 的类对象,但不在命名元组的情况下。

如果是这样的话,解释器是如何识别这个值的?喜欢在

x=12; y=12; 

xy 指的是同一个值 12。如果我这样做

point1=namedtuple('point','x y') 

是指之前的同一个类吗?

最佳答案

类在 Python 中只是对象namedtuple() 每次返回一个新的类(名称只用于设置__name__ 属性)。使用相同的名称多次调用 namedtuple() 仍会创建多个唯一的类对象:

>>> from collections import namedtuple
>>> point_one = namedtuple('point', 'x y')
>>> point_two = namedtuple('point', 'x y')
>>> point_one
<class '__main__.point'>
>>> point_one is point_two
False

您也可以使用 type() 函数创建多个 Python 类:

 >>> point_first = type('point', (object,), {})
>>> point_second = type('point', (object,), {})
>>> point_first is point_second
False

或者通过在函数中嵌套 class 语句:

def foo():
class point:
# ...
return point

模块顶层的 class 语句只创建一个类的唯一原因是 Python 将模块视为单例;创建模块的代码仅在第一次导入时执行一次(之后结果存储在sys.modules中)。

关于python - NamedTuple,是被视为值的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657222/

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