如何调用包含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
相关产品推荐
相关产品推荐

