def __init__(self, f, df, ddf, x0, names=None, *args, **kwargs):
super(HessianChecker, self).__init__(df, ddf, x0, names=names, *args, **kwargs)<EOL>self._f = f<EOL>self._df = df<EOL>self._ddf = ddf<EOL>
:param f: Function (only used for numerical hessian gradient)
:param df: Gradient of function to check
:param ddf: Analytical gradient function
:param x0:
    Initial guess for inputs x (if it has a shape (a,b) this will be reflected in the parameter names).
    Can be a list of arrays, if takes a list of arrays. This list will be passed
    to f and df in the same order as given here.
    If only one argument, make sure not to pass a list!!!

:type x0: [array-like] | array-like | float | int
:param names:
    Names to print, when performing gradcheck. If a list was passed to x0
    a list of names with the same length is expected.
:param args: Arguments passed as f(x, *args, **kwargs) and df(x, *args, **kwargs)