有没有其他方法只迭代自定义类的属性,而不是内置属性(如__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__ --> <attribute '__dict__' of 'Terrain' objects>
GRASS --> 0
__weakref__ --> <attribute '__weakref__' of 'Terrain' objects>
__doc__ --> None
如果我只想要整数参数 (一个基本版本的枚举类型),我可以使用以下代码:
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
是否有可能独立于类型,仅迭代自定义类的非内置属性,例如,如果属性不全是整数。我可以扩展条件来包括更多类型,但我想知道是否有其他我所错过的方法。