Par exemple, que dois-je faire lorsque je veux exécuter un multiple constant de la "classe Point" souvent donnée à titre d'exemple? Par exemple
class Point():
def __init__(self,x,y):
self.x = x
self.y = y
Définissons cependant la multiplication. En tant que spécification, supposons que lors de la multiplication des points, un type Point multiplié par x et y est renvoyé, et lors de la multiplication par un entier, un type Point multiplié par une constante est renvoyé.
Tout d'abord, définissez l'opération avec \ _ \ _ mul__
class Point():
...
def __mul__(self, other):
if isinstance(other,Point):
return Point(self.x*other.x,self.y*other.y)
elif isinstance(other,int):
return Point(self.x*other,self.y*other)
else:
return NotImplemented
...
Comme cela seul ne prend pas en charge les opérations à partir de la droite, utilisez \ _ \ _ rmul__ Par exemple, lorsque mul est défini dans une opération qui détient la loi de change.
def __rmul__(self,other):
return self*other
Mais ça va si tu écris Si vous voulez utiliser autre * = etc., vous pouvez appeler \ _ \ _ imul__.
Recommended Posts