Python 'object () не принимает никаких параметров' ошибка - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть параметр класса ниже, который должен возвращать индекс из 2 чисел в списке 'nums', который суммирует до цели.

Когда я попытался протестировать класс, используя 9 в качестве цели, написав «Solution (nums, 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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы пропустили метод __init__() при определении класса Solution .Это не всегда обязательно, но поскольку вы создаете экземпляр класса, вызывая 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)

Это дает вам свободу либо определять аргументы во время инициализации класса, либо вызывать реальный метод сАрги.

0 голосов
/ 01 февраля 2019

Вы не можете использовать его таким образом, потому что у вашего класса есть значение по умолчанию __init __ (которое ваш класс получает по умолчанию, так как вы его не определили), и он не принимает никаких параметров, если вы не определили его для этого.

Используйте следующее:

sol = Solution()
sorted_stuff = sol.twoSum(nums, 9)
print(sorted_stuff)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...