gpt4 book ai didi

python - 在创建 namedtuple 时避免输入名称两次

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:51 24 4
gpt4 key购买 nike

namedtuple 创建通常需要输入两次名称,一次是提供包含新类的模块级变量的名称,一次是设置类的 __name__ 属性新类(用于打印出类对象,我认为主要用于调试、日志记录等)。

使用函数(下面的 new_namedtuple)来减少样板代码,除了有点出乎意料之外,还有什么缺点吗?使用 globals() 是正确的还是应该使用 exec?当然,只有当我们希望类名和变量名相同时才有效:

>>> from collections import namedtuple
>>> def new_namedtuple(name, *args, **kwargs):
... globals()[name] = namedtuple(name, *args, **kwargs)
...
>>> new_namedtuple('Point', 'x y')
>>> p = Point(x=1, y=10)
>>> p
Point(x=1, y=10)

编辑:@Moinuddin Quadri 指出导入会失败。那可不行。那么让我重新表述一下我的问题:最好的方法是什么?还是不值得?

最佳答案

在 3.6 中推荐使用 typing.NamedTuple 的方式可以满足您的要求,但需要您使用类型提示。

from typing import NamedTuple

class Point(NamedTuple):
x: int
y: int

p = Point(1, 10)

打字提示会以错误的方式摩擦。不幸的是,collections.namedtuple 不支持这种用法,希望能有所改变。

关于python - 在创建 namedtuple 时避免输入名称两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40684161/

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