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

如何调用包含3个方法的Python类?调用时y未定义报错如何解决

问题原因
  • 变量作用域问题:mult_XY方法中直接使用x、y,未添加self.前缀,Python会将其识别为当前方法的局部变量,找不到对应定义就会抛出未定义报错。
  • 输入方法未存储值:get_x、get_y方法中接收的输入只赋值给了方法内的局部变量,方法执行结束后值就会被销毁,没有保存到类的实例属性中,同时这两行代码还缺失右括号,本身存在语法错误。
  • 初始化逻辑不符合需求:你的需求是通过两个方法获取用户输入,不需要在实例化类的时候传入x、y,现有__init__要求传入两个参数,你调用时传入的x、y本身就是未定义的变量,也会触发报错。
  • 方法调用语法错误:print(num.mult_XY)只写了方法名未添加括号,不会执行方法逻辑,只会输出方法对象本身。
正确实现代码
class Product:
    def __init__(self):
        # 初始化时先将两个数值设为None
        self.x = None
        self.y = None

    def get_x(self):
        # 将用户输入赋值给实例属性self.x
        self.x = int(input('What is the first number?: '))

    def get_y(self):
        # 将用户输入赋值给实例属性self.y
        self.y = int(input('What is the second number?: '))

    def mult_XY(self):
        # 调用实例属性必须添加self.前缀
        return self.x * self.y
正确调用方式
# 实例化不需要传入参数
prod = Product()
# 依次调用两个输入方法获取用户输入
prod.get_x()
prod.get_y()
# 调用乘法方法时添加括号执行逻辑
print(prod.mult_XY())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:36:03