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

如何在类方法中创建类的全局实例?代码报错求修正

问题分析与代码修正

你的代码无法运行主要有两个核心问题: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:19:00