Vector classes

Mark Dickinson dickinsm at gmail.com
Sun Apr 22 11:30:52 EDT 2007


On Apr 22, 8:33 am, Mizipzor <mizip... at gmail.com> wrote:
> With 1, I can typ vec.x and vec.y, very nice. With 2, I need to do
> vec.vals[0] and vec.vals[1], which makes my eyes bleed.

If you add a __getitem__ method to the second vector class:

        def __getitem__(self, i):
                return self.vals[i]

then you can use vecs[0] instead of vec.vals[0].  But this vector
class has some other problems that you probably want to fix.  For
example, the __add__ method modifies the second argument:

>>> a = Vector([1, 2, 3])
[1, 2, 3]
>>> b = Vector([4, 5, 6])
[4, 5, 6]
>>> c = a + b
>>> print b.vals
[5, 7, 9]

Something like

        def __add__(self, other):
                return Vector(x + y for x, y in zip(self.vals,
other.vals))

might work better.  Similarly for the __sub__ method.

Have you considered using numpy?

Mark




More information about the Python-list mailing list