although james's idea is quite neat (especially the idea of heritable classes), my initial reaction was that it's too over-engineered. so here's a different approach.
there are two "tricks" that can help make using tuples easier: (1) unpacking the return value. (x, y) = returns_a_point() x += 1 (2) passing a tuple to a function that takes an x and a y value: def takes_two_values(x, y): ... p = (1, 2) takes_two_values(*p) and what I have done in the past is exploit these, so that functions/ methods that only takes a point takes two values while those that take many points, other arguments, etc, take a tuple. this sounds messy but works quite well because you tend to use the first kind of functions when you are changing coordinates (and then it is useful to treat a point as separate x and y values) and the second kind of functions when you are handling collections of points that don't need modifying. andrew -- http://mail.python.org/mailman/listinfo/python-list