如何使用python 3.7动态创建一个包含类的所有属性值的列表?
class Toolchain:
VS2008 = 'VS2008'
VS2015 = 'VS2015'
VS2017 = 'VS2017'
VS2017_08 = 'VS2017-08'
GCC = 'gcc'
CLANG = 'clang'
# LIST should contains: ['VS2008', 'VS2015', 'VS2017', 'VS2017-08', 'gcc', 'clang']
我尝试使用列表推导,例如:
LIST = [eval(param) for param in dir() if not param.startswith('_')]
但是我得到一个错误:
NameError: name 'CLANG' is not defined
答案 0 :(得分:1)
正如@ juanpa.arrivillaga指出的那样,您可以通过__dict__
或更易读的vars()
函数访问类属性。知道这些方法返回字典后,您就可以使用items()
进行列表理解了。
LIST = [val for key, val in vars(Toolchain).items() if not key.startswith('_')]
这应该为您提供以下输出:
['VS2008', 'VS2015', 'VS2017', 'VS2017-08', 'gcc', 'clang']