diff --git a/qcodes/instrument/base.py b/qcodes/instrument/base.py index 21dbf6fa25a..fc14f7a62ca 100644 --- a/qcodes/instrument/base.py +++ b/qcodes/instrument/base.py @@ -20,7 +20,8 @@ def __init__(self, name, **kwargs): # anyway threading.Lock is unpicklable on Windows # self.lock = threading.Lock() - def add_parameter(self, name, **kwargs): + def add_parameter(self, name, parameter_class=InstrumentParameter, + **kwargs): ''' binds one InstrumentParameter to this instrument. @@ -35,11 +36,14 @@ def add_parameter(self, name, **kwargs): shortcut methods: instrument.set(param_name, value) etc. - see InstrumentParameter for the list of kwargs + `parameter_class` can be used to construct the parameter out of + something other than InstrumentParameter + + kwargs: see InstrumentParameter (or `parameter_class`) ''' if name in self.parameters: raise KeyError('Duplicate parameter name {}'.format(name)) - self.parameters[name] = InstrumentParameter(self, name, **kwargs) + self.parameters[name] = parameter_class(self, name, **kwargs) def add_function(self, name, **kwargs): '''