code: def do_set(self, args: argparse.Namespace) -> None:
          
  
          # Check if param was passed in
          if not args.param:
              return self.show(args)
          param = utils.norm_fold(args.param.strip())
  
          # Check if value was passed in
          if not args.value:
              return self.show(args, param)
          value = args.value
  
          # Check if param points to just one settable
          if param not in self.settable:
              hits = [p for p in self.settable if p.startswith(param)]
              if len(hits) == 1:
                  param = hits[0]
              else:
                  return self.show(args, param)
  
          # Update the settable's value
          current_value = getattr(self, param)
          value = utils.cast(current_value, value)
          setattr(self, param, value)
  
          self.poutput('{} - was: {}\nnow: {}\n'.format(param, current_value, value))
  
          # See if we need to call a change hook for this settable
          if current_value != value:
              onchange_hook = getattr(self, '_onchange_{}'.format(param), None)
              if onchange_hook is not None:
                  onchange_hook(old=current_value, new=value)
docs: Set a settable parameter or show current settings of parameters