如何循环 Python 中的数据类?

How to loop through dataclass in Python?

我想遍历 python 中的数据类,以查找所有符合特定条件的汽车,但是,代码永远无法运行,因为变量被解释为属性,而不是多变的。

from dataclasses import dataclass

@dataclass
class cars:
    year: int = 0
    model: str = "unknown"
    PS: int = 0
    colour: str = "unknown"

car_1 = cars(year = 1980, colour = "brown")
car_2 = cars(year = 1999, colour = "black", PS = 82)

owned_cars = [car_1, car_2]

criteria = input("Which criteria to search for? year, model, PS, colour")

for car in owned_cars:
    value = car.criteria
    print(value, car)
AttributeError: 'cars' object has no attribute 'criteria'

使用时:

value = car.year

代码运行良好。我怎么知道 python,它应该将 criteria 解释为变量并使用它的内容,而不是它的名称?

这与 car 是数据类没有任何关系。 Python 属性就是这样工作的。如果要在字符串中按名称查找属性,请使用 getattr:

value = getattr(car, criteria)