python 遍历 class 个变量,只获取变量的值

python iterate over class variables and only get values of variables

我想要一个枚举器 class,它有 class 个具有相同值的变量,例如:

from enum import Enum
class Cars(Enum):
  BMW = "BMW"
  Mercedes = "Mercedes"
  Renault = "Renault"

现在我想遍历 Cars class 并获取每辆汽车的字符串值:

for car in Cars:
  print(car)

给出输出:

Cars.BMW
Cars.Mercedes
Cars.Renault

要仅获取字符串值,我需要做的是:

for car in Cars:
  print(car.value)

但我不想用.value

迭代

我尝试实现 __iter__()__next__() 方法但无法实现。

您可以通过覆盖 __str__:

from enum import Enum


class Cars(Enum):
    BMW = "BMW"
    Audi = "Audi"

    def __str__(self):
        return self.value

不过,这并不是真正应该使用枚举的方式,所以我不推荐它。只需将颜色用作它们本身的对象,并在需要时调用 .value。更好的是你可以只使用 .name:

from enum import auto, Enum


class Cars(Enum):
    BMW = auto()
    Audi = auto()


for brand in Cars:
    print(brand.name)