Я могу добавить число в класс Rabbit, но не наоборот:
class Rabbit:
def __init__(self, age):
self.age = age
def __add__(self, rabbit):
if isinstance(rabbit, int):
return self.age + rabbit
else:
return self.age + rabbit.age
print(Rabbit(10) + 5)
print(5 + Rabbit(10))
Последняя строка возвращает:
TypeError: unsupported operand type(s) for +: 'int' and 'Rabbit'
Это потому, что в первом выражении печати (который работает) Rabbit.__add__
вызывается под землей, а во втором выражении вызывается int.__add__
, и этот метод int.__add__
не работает с кроликами. Как лучше всего заставить эту работу работать? Я хочу иметь возможность добавлять ints к кроликам и кроликам к int.