def __init__(self, npts=(<NUM_LIT>,<NUM_LIT:20>), zorder=<NUM_LIT:7>, op='<STR_LIT:*>', barnes_dist=<NUM_LIT>,<EOL>barnes_clip_size=<NUM_LIT:3>, category='<STR_LIT>', shape=None,<EOL>float_precision=np.float64):
super(BarnesXYLegPolyZ, self).__init__(npts=npts, zorder=zorder,<EOL>op=op, barnes_dist=barnes_dist, barnes_clip_size=barnes_clip_size,<EOL>local_updates=True, category=category, shape=shape,<EOL>float_precision=float_precision)<EOL>
A Barnes interpolant. This one is of the form

.. math::
    I = \\left[1 + B(x,y) \\right]  (1 + z q(z)) + c

where B is a Barnes interpolants and q is a polynomial strictly in z.
Additionally.... operation multiply or x for poly?.
Always uses local updates, since evaluating a 2D barnes for an entire
image can be slow.

Parameters
----------
shape : iterable
    size of the field in pixels, needs to be padded shape

npts : 2-element tuple of ints, optional
    Number of control points used for the Barnes interpolant
    in x & y. Default is (40,20)

zorder : integer
    Number of orders for the z-polynomial.

op : string
    The operation to perform between Barnes and LegPoly, '*' or '+'.

barnes_dist : float
    Fractional distance to use for the barnes interpolator

local_updates : boolean
    Whether to perform local updates on the ILM

float_precision : numpy float datatype
    One of numpy.float16, numpy.float32, numpy.float64; precision
    for precomputed arrays. Default is np.float64; make it 16 or 32
    to save memory.