class Solution:
def twoSum(nums,target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
mm = list()
for i in range(len(nums)):
for j in range(len(nums)):
if nums[i]+nums[j] == target:
mm.append(i),mm.append(j)
break
break
return mm
a = Solution()
b = list([2,7,11,15])
print(a.twoSum(b,9))
输出错误
TypeError: twoSum() takes 2 positional arguments but 3 were given
没有类调用的情况下,这种函数定义是可以的,但是在类调用的时候,函数定义需要更改为:
def twoSum(self,nums,target):
此时函数运行成功
原因为:
对象调用方法时, 实际上是通过类调用的
a = Solution()
a.twoSum(nums,target)
实际上是这样调用的 Solution.twoSum(a, nums, target)
python隐含地把a 传进方法 替代了self, 就成了绑定的方法, 就可以执行了. 否则就是非绑定方法
a = Solution()
a.twoSum(nums,target)
实际上是这样调用的 Solution.twoSum(a, nums, target)
python隐含地把a 传进方法 替代了self, 就成了绑定的方法, 就可以执行了. 否则就是非绑定方法

本文通过一个实例展示了在Python3中类函数调用时出现的参数错误问题。当尝试调用`twoSum`方法时,抛出了`TypeError`,指出函数接受2个位置参数但实际上给出了3个。解决这个问题的方法是在函数定义前添加`self`参数,以符合类方法的调用规范。修复后的代码能够正常运行。
1万+

被折叠的 条评论
为什么被折叠?



