You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python类中实现类似globals()[]的动态变量访问功能?

动态访问类实例属性的实现方法

你原本的globals()方法只能读取当前模块全局作用域下的变量,类的实例属性绑定在self对象上,不属于全局变量,因此无法匹配到结果。只需要将全局变量读取逻辑替换为实例属性读取逻辑即可实现需求,最推荐使用Python内置的getattr()方法实现,修改后的完整代码如下:

class boolean_func():
    def __init__(self):
        self.boolean_0 = True
        self.boolean_1 = False

    def check_status(self):
        no = 0
        while no < 2:
            # 替换原有globals()调用,从self实例中读取对应属性
            if getattr(self, f'boolean_{no}'):
                print(f'Boolean {no}', 'is True')
            else:
                print(f'Boolean {no}', 'is False')
            no += 1

# 测试代码
if __name__ == "__main__":
    obj = boolean_func()
    obj.check_status()

可选实现方案说明

  • 使用getattr()是官方推荐的动态属性访问方案,还支持传入默认值处理属性不存在的场景,写法为getattr(self, 属性名, 默认返回值),如果对应属性不存在会直接返回你设置的默认值,不会抛出异常。
  • 也可以直接访问实例的属性字典self.__dict__获取值,写法为self.__dict__[f'boolean_{no}'],该写法没有默认值容错能力,属性不存在时会直接抛出KeyError异常。

内容的提问来源于stack exchange,提问作者progress456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:45:02