如何通过循环将Python对象的字符串属性名转为属性对象并生成列表
Python通过属性名字符串生成对象属性列表
直接用Python内置的getattr()函数就能解决这个问题——它可以根据字符串形式的属性名,获取对应的对象属性。
实现步骤及代码示例
- 先准备好属性名的字符串列表
- 循环遍历每个属性名,用
getattr()获取属性对象并添加到列表
# 假设my_obj是已存在的目标对象 attr_name_strings = ["attr1", "attr2", "attr3"] attr_list = [] # 循环逐个添加属性对象 for attr_name in attr_name_strings: # 获取对应属性,第二个参数是属性名字符串 attr_obj = getattr(my_obj, attr_name) attr_list.append(attr_obj) # 更简洁的列表推导式写法 attr_list = [getattr(my_obj, name) for name in attr_name_strings]
可选:处理属性不存在的情况
如果担心某个属性名不存在会报错,可以给getattr()加第三个参数设置默认值,比如:
# 属性不存在时用None填充,避免抛出AttributeError attr_list = [getattr(my_obj, name, None) for name in attr_name_strings]
内容的提问来源于stack exchange,提问作者Rebel
相关产品推荐
相关产品推荐

