有没有另一种方法可以只遍历未内置的自定义类的属性(例如__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
如果我只需要整数参数(枚举类型的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
是否可以只遍历独立于类型的自定义类的非内置属性,例如,如果这些属性不是所有的整数。大概我可以扩展条件以包含更多类型,但我想知道是否有其他方法我遗漏了。
我会用:
或者我创建一个实际的枚举类型来实现我想要的功能。
内置属性应该以“\uuu”开头和结尾,因此:
有些人喜欢创建自己的
__attributes__
,这样代码就不能正常工作。嘿,这个名称空间之所以被保留是有原因的您还需要检查
__slots__
你可以试试这样的:
相关问题 更多 >
编程相关推荐