亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

鳳凰求蠱 2021-10-26 16:51:20
我有下面的類參數,它應該返回總和為目標的“nums”列表中的 2 個數字的索引。當我嘗試通過編寫 'Solution(nums,9)' 來測試使用 9 作為目標的類時,Python 返回了 'TypeError: object() requires no parameters' 錯誤。誰能告訴我我在腳本中做錯了什么?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 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

你不能那樣使用它,因為你的類有默認的 __init__(你的類默認得到,因為你沒有定義它),并且它不接受任何參數,除非你定義它來接受它。


使用以下內容:


sol = Solution()

sorted_stuff = sol.twoSum(nums, 9)

print(sorted_stuff)


查看完整回答
反對 回復 2021-10-26
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

您__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 調用實際方法。


查看完整回答
反對 回復 2021-10-26
  • 2 回答
  • 0 關注
  • 326 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號