From: Georg Brandl Date: Mon, 5 Jul 2010 20:13:41 +0000 (+0000) Subject: Update Vec class constructor, remove indirection via function, use operator module. X-Git-Tag: v3.2a1~297 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5ada7c7315f34eee5664f4daf44ff75eba414fe3;p=python Update Vec class constructor, remove indirection via function, use operator module. --- diff --git a/Demo/classes/Vec.py b/Demo/classes/Vec.py index edb31470d7..7e3e3aedcf 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)