是否有便携式的namedtuple版本不允许索引编制?

时间:2019-03-21 14:12:29

标签: python

namedtuple是在Python中创建不可变记录类的绝佳选择,因为它消除了样板。但是,namedtuple仍支持位置索引<script> function calculate() { var myBox1 = document.getElementById('box1').value; var myBox2 = document.getElementById('box2').value; var result = document.getElementById('result'); var myResult = myBox1 * myBox2; document.getElementById('result').value = myResult; var main = myResult * 5/100; var main_total = myResult + main; document.getElementById('result1').value = main_total; } </script> 。有没有一种方法可以在Python 2和Python 3中定义诸如namedtuple之类的东西,但是没有位置索引?

1 个答案:

答案 0 :(得分:4)

您正在谈论dataclasses

from dataclasses import dataclass

@dataclass(frozen=True)
class Foo:
    bar: str
    baz: str

Foo('spam', 'ham')[0]  # TypeError

数据类的目的是在构建用于保存数据的简单类时消除样板。它们不是tuple 的方式的namedtuple的子类。

请注意,尽管dataclasses库是Python 3.7中的新增功能,但还有一个backport可在3.6上运行。对于早期的Python版本or more complex requirements,请使用attrs project,它启发了dataclasses