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

我有下面的类参数,它应该返回总和为目标的“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


凤凰求蛊
浏览 261回答 2
2回答

RISEBY

你不能那样使用它,因为你的类有默认的 __init__(你的类默认得到,因为你没有定义它),并且它不接受任何参数,除非你定义它来接受它。使用以下内容:sol = Solution()sorted_stuff = sol.twoSum(nums, 9)print(sorted_stuff)

慕妹3242003

您__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 调用实际方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python