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)
我想要一个枚举器 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)