class a: def __init__(self, other): self.data = other def __add__(self, other): return self.data + other def __radd__(self,other): return self.data + other X = a(1) # создаем экземпляр класса
Теперь если ввести выражение X+1 ответом будет - 2. Т.е как я понимаю интерпретатор перехватывает выражение + и вызывает метод экземпляра X - __add__ . Но метод __add__ перегрузки есть и у числа 1. Если интерпретатор вызывает метод перегрузки именно левого аргумента (т.е X), то почему если ввести выражение 1+X, метод __add__ будет перегружен у экземпляра X (т.е объекта справа )?