@zlodiak

Когда срабатывает __sub__()?

Есть такой код:

class Number:
	def __init__(self, start):
		self.data = start
	def __sub__(self, other):
		return Number(self.data - other)

X = Number(5)
Y = X - 2

print(Y.data)


В нём переопределяется оператор вычитания. И в общем понятно что происходит в представленном коде. Но следующая строка не понятна:
Y = X - 2

Объясните пожалуйста почему запись X - 2 вызывает метод __sub__()? Этому есть какое-нибудь техническое объяснение или нужно просто запомнить, что если:
1. записать экземпляр класс (X)
2. после него записать минус (-)
3. после него записать какой-нибудь другой экземпляр класса

, то сработает метод __sub__(), в аргумент которого каким-то неведомым, но надёжным способом попадёт __str__() представление экземпляра класса из пункта 3 (то есть число 2).
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы