Save memory by having all the water tiles pointing to the same water instance. water = WaterTile() ... build your tiles : if tile should be water: tile[x][y] = water # doesn't instanciate else: tile[x][y] = GroundTile() # instanciate new object