将元组作为变量传递给python3 Dataclasses类

时间:2020-01-23 21:47:14

标签: python-3.x python-dataclasses

我正在使用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 ()的细节有关,这就是为什么在数据类出现之前我一直避免使用类的原因。猜猜我不能永远避免他们...

0 个答案:

没有答案