Python调用ReverseNo()报takes 1 positional argument but 2 were given错误
问题分析与修复
错误产生原因
- 类的实例方法调用时,Python会自动将实例对象作为第一个参数传入方法,因此实例方法定义时必须预留第一个参数接收该值(惯例命名为
self)。原代码中ReverseNo仅声明了1个形参n,调用时传入了自动生成的实例参数+手动传入的1234共2个参数,和形参数量不匹配,触发类型错误。 - 即便补上
self参数,原代码还存在变量作用域问题:方法内直接使用的reverse会被识别为未定义的局部变量,无法直接访问类属性reverse。
修复方案
这里临时变量reverse仅在反转计算时使用,放在方法内部作为局部变量更合理,修改后代码如下:
class Reverse(): def ReverseNo(self, n): reverse = 0 while n != 0: reverse = reverse * 10 + n % 10 n = n // 10 return reverse obj1 = Reverse() print(obj1.ReverseNo(1234))
运行后将输出预期结果4321。
内容的提问来源于stack exchange,提问作者Harry John
相关产品推荐
相关产品推荐

