from collections import namedtuple Point = namedtuple('Point', 'x, y') POINTS = ( Point(610, 102), Point(253, 241), Point(341, 446), Point(357, 42), Point(153 ,336), Point(203, 125), Point(306, 492), Point(335, 57), Point(38, 400), Point(191, 357), # and many, many more points. ) print POINTS ## ## Ok, we decided 3D is way cooler. ## But only a few points have a z coordinate != 0. ## Point = namedtuple('Point', 'x, y z') ## ## The solution is quite simple. ## Our on-the-fly partial adapter! ## from functools import partial Point = partial(Point, z = 0) POINTS = ( Point(610, 102), Point(253, 241), Point(341, 446, z = 23), # But, however, our defaults have to be specified as keyword arguments. # Otherwise we got a complaint: # TypeError: __new__() got multiple values for keyword argument 'z' Point(357, 42), Point(153 ,336, z = 11), Point(203, 125), Point(306, 492, z = 42), Point(335, 57), Point(38, 400, z = 47), Point(191, 357), ) print POINTS