Python'object()不带参数'错误

时间:2019-02-01 05:44:34

标签: python class object

我有以下class参数,该参数应返回“ nums”列表中2个数字的索引,这些数字加总到目标。

当我尝试通过编写'Solution(nums,9)'将9作为目标来测试类时,Python返回了'TypeError:object()不带参数'错误。谁能告诉我我在脚本中做错了什么?

nums = [2, 7, 11, 15]
class Solution(object):
    def twoSum(self, nums, target):
        nums_1 = nums        
        for i in range(len(nums)):
            for a in range(len(nums_1)):
                if i != a:
                    if nums[i] + nums_1[a] == target:
                        return(sorted([i, a]))
Solution(nums,9)

Traceback (most recent call last):
TypeError: object() takes no parameters

2 个答案:

答案 0 :(得分:2)

您不能那样使用它,因为您的类具有默认的__init __(由于您未定义它,因此该类在默认情况下会得到它),并且除非您定义要接受的参数,否则它不会接受任何参数

使用以下内容:

sol = Solution()
sorted_stuff = sol.twoSum(nums, 9)
print(sorted_stuff)

答案 1 :(得分:1)

在定义 Solution 类时,您错过了__init__()方法。它并不总是强制性的,但是由于您是通过使用一些参数调用Solution()来创建类的实例的,因此必须实现__init__方法。因此实现可以是:

_nums = [2, 7, 11, 15]
class Solution(object):
    def __init(nums, target):
      self.nums = nums
      self.target = target

    def twoSum(self, nums=None, target=None):
        if not nums:
           nums = self.nums

        if not target:
           target= self.target

        nums_1 = nums        
        for i in range(len(nums)):
            for a in range(len(nums_1)):
                if i != a:
                    if nums[i] + nums_1[a] == target:
                        return(sorted([i, a]))
s = Solution(_nums,9)
s.twoSum()

您也可以这样做:

 s = Solution()
 s.twoSum(_nums,9)

这使您可以自由地在类初始化期间定义args或使用args调用实际方法。