modifications concerning the usage of __specialmethods__ made

This commit is contained in:
Sebastian Wehling 2014-02-19 13:07:39 +01:00
parent 45999de6d2
commit 270e3b6d00

View File

@ -87,38 +87,40 @@ class AutoPickParameter(object):
return self.__parameter return self.__parameter
def __getitem__(self, key): def __getitem__(self, key):
return self.getParam(key) return self.__parameter[key]
def getParam(self, *args): def __setitem__(self, key, value):
self.__parameter[key] = value
def __delitem__(self, key):
del self.__parameter[key]
def __iter__(self):
return iter(self.__parameter)
def __len__(self):
return len(self.__parameter.keys())
def getParam(self, *args):
try: try:
for param in args: for param in args:
try: try:
return self.__parameter[param] return self.__getitem__[param]
except KeyError, e: except KeyError, e:
self._printParameterError(e) self._printParameterError(e)
except TypeError: except TypeError:
try: try:
return self.__parameter[args] return self.__getitem__[args]
except KeyError, e: except KeyError, e:
self._printParameterError(e) self._printParameterError(e)
def __setitem__(self, key, value): def setParam(self, **kwargs):
kwargs = {}
kwargs[key] = value
kwargs['directcall'] = True
self.setParam(**kwargs)
def setParam(self, directcall=None, **kwargs):
for param, value in kwargs.iteritems(): for param, value in kwargs.iteritems():
try: try:
self.__parameter[param] = value self.__setitem__[param] = value
except KeyError, e: except KeyError, e:
self._printParameterError(e) self._printParameterError(e)
if not directcall: print self
print self
def __len__(self):
return len(self.__parameter.keys())
def _printParameterError(self, errmsg): def _printParameterError(self, errmsg):
print 'ParameterError:\n non-existent parameter %s' % errmsg print 'ParameterError:\n non-existent parameter %s' % errmsg