Hello list, I recently got convinced that immutable types are preferable (massive generalization, I know). Therefore I went ahead and created a branch making the Vector2 and Vector3 types in the pygame.math package immutable. If you want to check it out the branch is called immutable_vectors[1]. What changed? * Vector2/3 are now immutable * you cannot access the components x/y/z directly. either use indexing or the new accessor methods x()/y()/z() * the inplace version of methods are gone (e.g., rotate_ip()) * inplace operators still work but create and return a new object. Observe: >>> a = b = Vector2(1, 2) >>> assert id(a) == id(b) >>> b += Vector(3, 4) >>> assert id(a) != id(b) >>> assert a.x() == 1 and a.y() == 2 >>> assert b.x() == 4 and b.y() == 6 * Vector2.from_polar() and Vector3.from_spherical() are now classmethods
The math package is still marked as experimental so I think that it might be alright to merge this change if desired. Cheers, Lorenz [1] https://bitbucket.org/pygame/pygame/branch/immutable_vectors