Python如何从外部模块动态拼接属性名获取对应变量值
解决方案
Python 不支持直接通过点运算符拼接字符串的方式动态获取对象/模块属性,要实现该需求,需使用内置函数getattr(),传入目标对象、属性名字符串即可完成取值。
原场景修正后代码
current_gun_name = string_assigned_above iron = win32api.GetAsyncKeyState(0x67) if iron < KeyMin and win32api.GetAsyncKeyState(0x11) < 0: gun_type = getattr(values, current_gun_name + "_Iron")
简化示例的实现代码
import values current_string = "test" target_attr_name = current_string + "ing" testing_list = getattr(values, target_attr_name) print(testing_list)
可选优化
如果担心属性不存在抛出AttributeError异常,可以给getattr()传入第三个参数作为默认返回值,示例:
# 找不到对应属性时默认返回空列表 gun_type = getattr(values, current_gun_name + "_Iron", [])
内容的提问来源于stack exchange,提问作者DylanCodes
相关产品推荐
相关产品推荐

