Witam, od niedawna uczę się języka python ( poza C++ ), napisałem prostą testową klasę:
class Point:
def __init__(self, name, x, y):
self.name = name
self.x = x
self.y = y
def __str__(self):
return f"{self.name}({self.x}, {self.y})"
def __eq__(self, other):
if self.x == other.x and self.y == other.y:
return True
return False
def __add__(self, other):
return Point("none", self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Point("none", self.x - other.x, self.y - other.y)
def multiplication_by_number(self, n):
return Point(self.name, self.x * n, self.y * n)
Moje pytanie dotyczy przeciążeń metod dla różnych typów, wiem jak np. zrobić metodę która pomnoży przez siebie dwa punkty ( __mult__ ), co jednak jeśli chcę zrobić przeciążenie mnożenia punktu przez liczbę typu float a nie obiektu tej samej klasy? Tzn:
p3 = p3 * 10
bo na razie umiem to zrobić tylko tak:
p3 = p3.multiplication_by_number(10)
w c++ obie metody wyglądały by w ten sposób:
Point operator*(Point p);
Point operator*(int n);
używając C++ mogę zrobić własną metodę czy niezależną funkcję dla każdego typu obiektów... ale w pythonie typy dobierane są automatycznie, czy jest w ogóle możliwość zrobienia czegoś takiego?
Z góry dziękuje za pomoc i pozdrawiam ;)