def __init__(self, x_list=list(), y_list=list(), boundary_condition=None):
super(spline, self).__init__(x_list, y_list)  <EOL>self.intervals = list()<EOL>self.interpolation_coefficients = list()<EOL>self.boundary_condition = boundary_condition<EOL>for i in range(<NUM_LIT:0>, len(self.x_list) - <NUM_LIT:1>):<EOL><INDENT>self.intervals.append([self.x_list[i], self.x_list[i + <NUM_LIT:1>]])<EOL><DEDENT>if self.y_list:<EOL><INDENT>self.set_interpolation_coefficients()<EOL><DEDENT>
:param x_list: data
:param y_list: data
:param boundary_condition: Either a tuple (l, r) of values for the slope or None.
    If the argument is not specified then None will be taken as boundary conditions, which
    leads to the so called not-a-knot method for splines. Not-a-knot will determine the boundary conditions by also
    requiring that the third derivatives of the two most left and the two most right interpolation polynomials agree.
    The boundary condition (0,0) will lead to the so called natural spline