Mam klasę wektorową i zdefiniowałem metodę __mul__
, aby pomnożyć wektor przez liczbę.Definiowanie aliasów metod w Pythonie?
Oto metoda __mul__
:
def __mul__(self, other):
x = self.x * other
y = self.y * other
new = Vector()
new.set_pos((x, y))
return new
Moim problemem jest to, że nie wiem, która jest która między liczbą i wektorem. Jeśli self jest liczbą, self.x podnosi błąd. (Ja może pomylić w tej kwestii: Czy „inny” zawsze liczbą)
Więc znalazłem tutaj: Python: multiplication override że mogę zrobić:
__rmul__ = __mul__
ale w jaki sposób można to zrobić w sposób definicja klasy?
Coś jak:
def __rmul__ = __mul__
Czy istnieje sposób sprawdzenia, który z nich zostanie nazwany? –
'__mul__' najpierw, a następnie' __rmul__' jeśli to się nie powiedzie. – katrielalex
lepiej: lub "powiedz b, aby pomnożyć samodzielnie (b)". Operator mnożenia nie musi być przemienny. – glglgl