为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信