Страницы

Поиск по вопросам

понедельник, 28 января 2019 г.

Перегрузка оператора + для сложения своего объекта и чисел

Хочу осуществить возможность перегрузить оператор +, таким способом, что бы возможно было к объекту добавлять объект, и к объекту добавлять число.
class Fff: def __init__(self,x,y): self.x = x self.y = y def __add__(self,obj): return Fff(self.x + obj.x,self.y + obj.y) def __add__(self,v): return Fff(self.x + v,self.y + v) def show(self): print self.x,' : ',self.y
f1 = Fff(1,2) f2 = Fff(5,5)
result = f1 + f2 result2 = f1 + 2
result.show() result2.show()


Ответ

Перегрузки функций в питоне нету. Но вы можете реализовать различное поведение функции в зависимости от типа переданного аргумента. Используйте нечто подобное вместо обеих ваших методов сложения.
def __add__(self, arg): if isinstance(arg, numbers.Number): return Fff(self.x + arg, self.y + arg) else: return Fff(self.x + arg.x, self.y + arg.y)

Комментариев нет:

Отправить комментарий