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)
Run Code Online (Sandbox Code Playgroud)
编辑:@Moinuddin Quadri指出进口将失败.那不好.所以让我重新解释一下我的问题:最好的方法是什么?还是不值得?
在3.6中使用typing.NamedTuple的推荐方法将满足您的请求,但要求您使用类型提示.
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int
p = Point(1, 10)
Run Code Online (Sandbox Code Playgroud)
打字暗示有些错误.不幸的是,collections.namedtuple不支持这种用法,手指越过那种变化.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |