如何在类方法中创建类的全局实例?代码报错求修正
问题分析与代码修正
你的代码无法运行主要有两个核心问题:global关键字的语法错误,以及Python严格要求的缩进问题,我来一步步帮你修正:
1. 错误点解析
global关键字用法错误:Python中global仅用于声明变量属于全局作用域,不能在声明的同时直接赋值(比如global r1 = temp这种写法是不允许的),必须先声明,再单独赋值。- 代码缩进缺失:Python是缩进敏感语言,类的方法(
__init__、set_glob)必须缩进在类定义的范围内,否则会被视为类外的独立代码,导致逻辑混乱。
2. 修正后的完整代码
class test: def __init__(self, a=0, b=0): self.a = a self.b = b def set_glob(self, check): if check: temp = test(1,1) # 先声明变量为全局,再赋值 global r1 r1 = temp global r2 r2 = self a = test(1,2) a.set_glob(True) # 测试验证 print(r1.a, r1.b) # 输出:1 1 print(r2.a, r2.b) # 输出:1 2
3. 修正说明
- 给类的所有方法加上了正确的缩进,确保它们属于
test类的成员; - 将
global r1 = temp拆分为global r1和r1 = temp两步,r2同理,符合Python的语法规则; - 运行后,
r1会成为全局作用域下的test(1,1)实例,r2会指向调用set_glob的那个实例a(也就是test(1,2))。
内容的提问来源于stack exchange,提问作者YYK
相关产品推荐
相关产品推荐

