Хочу осуществить возможность перегрузить оператор +, таким способом, что бы возможно было к объекту добавлять объект, и к объекту добавлять число.
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)
Комментариев нет:
Отправить комментарий