我可以将元数据添加到namedtuple吗?

时间:2017-10-31 02:55:12

标签: python

我有一个像这样的名字小组:

tup = namedtuple(
    'MyData', [
        'field_1',
        'field_2
    ])

我希望能够做的是将元数据附加到每个值,例如,以了解字段是否为字母数字:

tup = namedtuple(
    'MyData', [
        {name:'field1', metadata: {is_alpha: True}},
        {name:'field2', metadata: {is_alpha: False}},
    ])

我在文档中找不到任何类似这样的接口,但是我想知道你们是否知道它是否可能。谢谢!

1 个答案:

答案 0 :(得分:0)

一个namedtuple不完全支持这个,但它是一个类,所以你可以在定义tup.field1_is_alpha = True之后通过执行类似tup的操作来添加其他属性(在顶部)的帖子)。

另一个可能的解决方案是将tup的每个字段设置为另一个元组(或命名元组或类),例如..

t1 = tup( (1,True), (5,False) )

这里的缺点是元数据与类的每个实例一起,而不是类本身。