Доступ к нескольким экземплярам через функцию класса - PullRequest
3 голосов
/ 10 февраля 2020

Как получить доступ к нескольким экземплярам одновременно через функцию в классе?

Я узнал о таких параметрах, как other, но что если у меня есть 3 объекта, и мне нужно получить доступ ко всем из них в та же функция в то же время, как я могу это сделать?

Итак, вот код, который я пытаюсь исправить:

class Vector2D:

    def __init__(self, x, y):

        self.x = x
        self.y = y

    def __add__(self, other, other_1):

        return Vector2D(self.x + other.x + other_1.x, self.y + other.y)

first = Vector2D(5, 7)
second = Vector2D(3, 9)
third = Vector2D(1, 1)
result = first + second + third

print(result.x)
print(result.y)}

Он показывает следующую ошибку:

TypeError: __add__() missing 1 required positional argument: 'other_1'

Как я могу это исправить?

1 Ответ

1 голос
/ 11 февраля 2020

Просто удалите параметр other_1:

>>> class Vector2D:
...     def __init__(self, x, y):
...         self.x = x
...         self.y = y
...     def __add__(self, other):
...         return Vector2D(self.x + other.x, self.y + other.y)
... 
>>> first = Vector2D(5, 7)
>>> second = Vector2D(3, 9)
>>> third = Vector2D(1, 1)
>>> result = first + second + third
>>> 
>>> print(result.x)
9
>>> print(result.y)
17

Идея состоит в том, что first + second + third эквивалентно (first + second) + third. Python одновременно добавляет только две вещи.

...