有没有另一种方式来迭代只是没有内建的自定义类的属性(例如__dict__,__module__等)?例如,在这段代码中:
class Terrain:
WATER = -1
GRASS = 0
HILL = 1
MOUNTAIN = 2
我可以遍历所有这些属性,如下所示:
for key, value in Terrain.__dict__.items():
print("{: <11}".format(key), " --> ", value)
其输出:
MOUNTAIN --> 2
__module__ --> __main__
WATER --> -1
HILL --> 1
__dict__ -->
GRASS --> 0
__weakref__ -->
__doc__ --> None
如果我只想要整数参数(一个枚举类型的rudimentary version),我可以使用这个:
for key, value in Terrain.__dict__.items():
if type(value) is int: # type(value) == int
print("{: <11}".format(key), " --> ", value)
这给出了预期的结果:
MOUNTAIN --> 2
WATER --> -1
HILL --> 1
GRASS --> 0
是否可以仅遍历独立于类型的自定义类的非内置属性,例如,如果属性不是全部整数.大概我可以扩展条件包括更多的类型,但我想知道是否还有其他的方式我失踪.