[英]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.