Что значит «другой» в питоне? - PullRequest
0 голосов
/ 24 июня 2018

Итак, я только начал изучать объектно-ориентированное программирование в Python 3 , и я столкнулся с методом "__add__", и я не понимаю, что " другие "и что это делает.Я попытался найти ответ в Интернете, но ничего не нашел, вот пример моего кода:

import math

class MyClass:

    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __add__(self, other):
        f = self.x + other.x
        e = self.y + other.y

Ответы [ 3 ]

0 голосов
/ 24 июня 2018

что такое "другой" и что он делает.

Это имя параметра. Параметр other является (например) другим экземпляром MyClass. Возьмите следующий пример:

a = MyClass(1, 2)
b = MyClass(3, 4)
# the next line calls MyClass.__add__ on the instance a
c = a + b 

В этом случае a равно self, а b равно other.

Код для __add__ в вашем примере неполный, он должен действительно вернуть новый MyClass экземпляр.

def __add__(self, other):
    f = self.x + other.x
    e = self.y + other.y
    return MyClass(f, e)
0 голосов
/ 24 июня 2018

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

Вот некоторые имена аргументов, которые обычно имеют особое значение.

  • self: аргумент, ожидаемый в качестве экземпляра, из которого был вызван метод

  • other: аргумент, ожидаемый в качестве экземпляра класса, но не тот, который вызывает метод

  • cls: сам класс

В частности, метод __add__ вызывается оператором +.

self + other

... это то, что вызывает ...

self.__add__(other)

Пример

class MyNumber(int):
    def __add__(self, other):
        print('I am', self)
        print('I encountered', other)
        return super().__add__(other)

x = MyNumber(2)
y = MyNumber(3)

x + y

Вывод

I am 2
I encountered 3
0 голосов
/ 24 июня 2018

other в этом случае называется «параметром». Параметр похож на «дыру» в определении функции, которую позже можно заполнить конкретным значением, называемым «аргументом».

Например, в

def foo(a, b):
    return a + b

a и b являются параметрами для функции foo, а при вызове

foo(3, 5)

затем 3 и 5 являются аргументами, которые связаны с параметрами, так что для этого конкретного вызова функции выполняемый код будет

3 + 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...