From 5ada7c7315f34eee5664f4daf44ff75eba414fe3 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 5 Jul 2010 20:13:41 +0000 Subject: Update Vec class constructor, remove indirection via function, use operator module. --- Demo/classes/Vec.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Demo/classes/Vec.py b/Demo/classes/Vec.py index edb3147..7e3e3ae 100644 --- a/Demo/classes/Vec.py +++ b/Demo/classes/Vec.py @@ -1,8 +1,6 @@ # A simple vector class - -def vec(*v): - return Vec(*v) +import operator class Vec: @@ -10,14 +8,16 @@ class Vec: def __init__(self, *v): self.v = list(v) - def fromlist(self, v): + @classmethod + def fromlist(cls, v): if not isinstance(v, list): raise TypeError - self.v = v[:] - return self + inst = cls() + inst.v = v + return inst def __repr__(self): - return 'vec(' + repr(self.v)[1:-1] + ')' + return 'Vec(' + repr(self.v)[1:-1] + ')' def __len__(self): return len(self.v) @@ -27,24 +27,24 @@ class Vec: def __add__(self, other): # Element-wise addition - v = list(map(lambda x, y: x+y, self, other)) - return Vec().fromlist(v) + v = list(map(operator.add, self, other)) + return Vec.fromlist(v) def __sub__(self, other): # Element-wise subtraction - v = list(map(lambda x, y: x-y, self, other)) - return Vec().fromlist(v) + v = list(map(operator.sub, self, other)) + return Vec.fromlist(v) def __mul__(self, scalar): # Multiply by scalar v = [x*scalar for x in self.v] - return Vec().fromlist(v) + return Vec.fromlist(v) def test(): - a = vec(1, 2, 3) - b = vec(3, 2, 1) + a = Vec(1, 2, 3) + b = Vec(3, 2, 1) print(a) print(b) print(a+b) -- cgit v0.12