code: 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)f 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))
docs: Deserialises the object.
          Automatically inspects the object's __init__ function and
          extracts the parameters.
          Can be trivially over-written.