如何在Python类中修改全局变量并使修改后的值全局生效
问题原因
- 仅创建了Test类的实例,没有调用
testing()方法,所有修改全局变量的逻辑都封装在该方法中,未执行自然不会生效 - 原有判断逻辑仅能根据
a的取值修改cross或circle其中一个变量,无法同时将两个变量设为True,和你预期的输出要求不匹配
修复方案
你只需要在实例化后主动调用testing()方法,再根据你的需求调整判断逻辑即可,符合「修改变量的逻辑放在类中」的要求,修改后的可运行代码如下:
cross = False circle = False count = 0 a = 'cross' class Test: def testing(self): global count, cross, circle count += 1 if a == 'cross': cross = True circle = True elif a == 'circle': circle = True cross = True Test().testing() print(cross) print(circle) print(count)
运行后输出结果和你预期一致:
True True 1
如果你不需要同时将cross和circle都设为True,仅需要类内修改全局变量生效,只需要加testing()的调用即可,不需要调整判断逻辑,此时运行输出为:
True False 1
内容的提问来源于stack exchange,提问作者NNC21July
相关产品推荐
相关产品推荐

