Loop over all variables in class that acts like enum
我有一个类似于枚举的类。
我想循环他的变量(枚举的值)
1 2 3 4 5 6 7 8 9 10 11 12 | class Demos(object): class DemoType(object): def __init__(self, name): self.name = name def __repr__(self): return self.name VARIABLE1 = DemoType("Car") VARIABLE2 = DemoType("Bus") VARIABLE3 = DemoType("Example") VARIABLE4 = DemoType("Example2") |
我想过使用
我也希望它像这样表示,主要是因为它会向
而不是重新发明枚举类型,最好使用Python的Enum类型(也已经向后移植)。 然后你的代码看起来像
1 2 3 4 5 6 7 8 9 | class Demos(Enum): VARIABLE1 ="Car" VARIABLE2 ="Bus" VARIABLE3 ="Example" VARIABLE4 ="Example2" --> for variable in Demos: ... print variable |
我找到了答案,并没有重复我怎样才能在Python中代表'Enum'? 一点都不
答案是通过以下
1 2 | variables = [attr for attr in dir(Demos()) if not attr.startswith("__") and not callable(attr)] print variables |
我也可以通过这种方式为我创建一个函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Demos(object): class DemoType(object): def __init__(self, name): self.name = name def __repr__(self): return self.name @classmethod def get_variables(cls): return [getattr(cls, attr) for attr in dir(cls) if not callable(getattr(cls, attr)) and not attr.startswith("__")] VARIABLE1 = DemoType("Car") VARIABLE2 = DemoType("Bus") VARIABLE3 = DemoType("Example") VARIABLE4 = DemoType("Example2") for variable in Demos.get_variables(): print variable |