如何利用列表动态调用Python对象的属性?
动态通过字符串列表调用对象属性的正确方式
要实现用列表中的字符串动态调用对象属性,你需要使用Python内置的getattr()函数,这是处理这类动态属性访问的标准方法。
正确代码示例
my_list = ["last_modified", "created"] self.execute(getattr(record, my_list[0]), getattr(record, my_list[1]))
如果后续列表的长度可能变化,用列表推导式配合解包语法会更灵活——不管列表里有多少个属性名,都能一次性传入:
my_list = ["last_modified", "created"] # 批量获取所有属性值 attr_values = [getattr(record, name) for name in my_list] # 用*解包把列表元素作为参数传入 self.execute(*attr_values)
为什么你的尝试会报错
- 尝试1错误原因:
record.my_list[0]的写法是在试图访问record对象的my_list属性,但你的record并没有这个属性,Python自然会报错。你真正的需求是用列表里的字符串作为属性名,而非访问对象的my_list属性。 - 尝试2错误原因:
record.one是直接访问record的one属性,而不是变量one中存储的字符串对应的属性。Python不会自动把变量名解析为属性名,所以这种写法同样找不到对应属性。
内容的提问来源于stack exchange,提问作者paul_masterson
相关产品推荐
相关产品推荐

