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

JMRI脚本Jython2.7环境下__init__定义变量类外访问报错求解

问题原因

  • 未正确实例化类。代码中a = MyClass是将MyClass类对象本身赋值给变量a,而非创建类的实例。只有实例化类(调用类时加括号())才会自动执行__init__构造方法,你当前的写法__init__从未被触发,因此不会打印Initialized,也不会生成实例属性y。
  • __init__方法内部的x引用错误。你直接写self.y = x时,方法局部作用域、全局作用域都找不到变量x,后续即使实例化也会触发NameError,类属性x需要通过MyClass.x(类名调用)或self.x(实例继承调用)的方式访问。

解决方法

修正两处代码问题即可:

  1. 将类赋值改为类实例化写法,触发构造方法执行
  2. 修正构造方法内的类属性引用逻辑

修正后的完整代码如下:

class MyClass:
     """A Test - MyClass is a test"""
     x=1
     def __init__(self):
         # 修正类属性x的引用
         self.y = self.x
         print 'Initialized'
     def printMe(self):
         print self.y
# 修正类实例化写法,加括号触发构造方法
a = MyClass()
print a.x,a.y,a.__doc__

运行后会先输出Initialized,再正常输出1 1 A Test - MyClass is a test,无报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:15:02