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之类的东西,但是没有位置索引?
答案 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
。