簡體   English   中英

Python'object()不帶參數'錯誤

[英]Python 'object() takes no parameters' error

我有下面的類參數,它應該返回“ 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

您不能那樣使用它,因為您的類具有默認的__init __(由於您未定義它,因此該類在默認情況下會得到它),並且除非您定義要接受的參數,否則它不會接受任何參數。

使用以下內容:

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

您在定義解決方案類時錯過了__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調用實際方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM