An immutable's initial setattr allows only param's to be set and does not run checks on the new
    parameters until a full parameter-set has been specified, at which point it runs all checks and
    switches over to a normal setattr and getattr method.

def _imm_init_setattr(self, name, value):
    '''
    An immutable's initial setattr allows only param's to be set and does not run checks on the new
    parameters until a full parameter-set has been specified, at which point it runs all checks and
    switches over to a normal setattr and getattr method.
    '''
    params = _imm_param_data(self)
    if name in params:
        tx_fn = params[name][1]
        value = value if tx_fn is None else tx_fn(value)
        # Set the value
        object.__getattribute__(self, '__dict__')[name] = value
        # No checks are run, as we're in initialization mode...
    else:
        raise TypeError(
            'Attempt to change non-parameter \'%s\' of initializing immutable' % name)