Я пишу класс, перегружающий тип списка. Я просто написал это, и мне интересно, существует ли какой-либо другой способ, менее необходимый для этого:
class Vector:
def __mul__(self, other):
#Vector([1, 2, 3]) * 5 => Vector([5, 10, 15])
if isinstance(other, int) or isinstance(other, float):
tmp = list()
for i in self.l:
tmp.append(i * other)
return Vector(tmp)
raise VectorException("We can only mul a Vector by a scalar")
def __truediv__(self, other):
#Vector([1, 2, 3]) / 5 => Vector([0.2, 0.4, 0.6])
if isinstance(other, int) or isinstance(other, float):
tmp = list()
for i in self.l:
tmp.append(i / other)
return Vector(tmp)
raise VectorException("We can only div a Vector by a Scalar")
def __floordiv__(self, other):
#Vector([1, 2, 3]) // 2 => Vector([0, 1, 1])
if isinstance(other, int) or isinstance(other, float):
tmp = list()
for i in self.l:
tmp.append(i // other)
return Vector(tmp)
raise VectorException("We can only div a Vector by a Scalar")
Как вы можете видеть, каждый перегруженный метод представляет собой копию/вставку предыдущего с небольшими изменениями.