Deserialises the object.
        Automatically inspects the object's __init__ function and
        extracts the parameters.
        Can be trivially over-written.

def from_dict(cls, jobj):
        '''Deserialises the object.
        Automatically inspects the object's __init__ function and
        extracts the parameters.
        Can be trivially over-written.
        '''
        try:
            obj = cls.__new__(cls)
            blacklist = set(['__class__', '__type__'] + cls.__blacklist)
            for k in set(jobj.keys()) - blacklist:
                setattr(obj, k, jobj[k])

            return obj
        except Exception as e:
            raise TypeError('Failed to deserialise {}: {} - args: {}'.format(cls.__name__, str(e), kwargs))