我正在使用Python3 dataclasses模块从TSV(下面的 inputlist )导入数据行,并将每一行作为数据类的实例进行处理。我不需要保留每一行来对它们进行比较,我只想在一行上采取行动,然后获得新的一行即可。我不知道为什么其中一种有效,而另一种无效:
from dataclasses import dataclass
@dataclass
class classify:
A_thing: str
B_thing: str
C_thing: str
D_thing: str
list1 = classify('eeny','meeny','miny','mo')
print(list1.B_thing)
print(list1,'\n')
inputlist = ('eeny','meeny','miny','mo')
list2 = classify(inputlist)
print(list2)
我得到:
meeny
classify(A_thing='eeny', B_thing='meeny', C_thing='miny', D_thing='mo')
Traceback (most recent call last):
File "test.py", line 15, in <module>
list2 = classify(inputlist)
TypeError: __init__() missing 3 required positional arguments: 'B_thing', 'C_thing', and 'D_thing'
当我可以通过相同的拼写将同一个元组传递给分类时,为什么不能? inputlist 中有4个项目,这是分类所期望的,但似乎无法单独查看 inputlist 的内容。我假设这与我不了解的 init ()的细节有关,这就是为什么在数据类出现之前我一直避免使用类的原因。猜猜我不能永远避免他们...