From: erickson Date: Thu, 26 Jul 2007 20:30:16 +0000 (+0000) Subject: python only evaluates default function param values once, so mutable types will alway... X-Git-Tag: osrf_rel_2_0_1~907 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=1d44f598e55d33874bdc149f45ac4cd10db639e7;p=OpenSRF.git python only evaluates default function param values once, so mutable types will always be pointers to the original default val. change the default osrfNetworkObject init function to None and setting default manually git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1059 9efc2488-bf62-4759-914b-345cdb29e865 --- diff --git a/src/python/osrf/net_obj.py b/src/python/osrf/net_obj.py index 8ae3b9b..1b65fbb 100644 --- a/src/python/osrf/net_obj.py +++ b/src/python/osrf/net_obj.py @@ -70,21 +70,24 @@ def __makeSetField(cls): setattr(cls, 'setField', set) -def __osrfNetworkObjectInit(self, data={}): +def __osrfNetworkObjectInit(self, data=None): ''' __init__ method for osrNetworkObjects. If this is an array, we pull data out of the data array (if there is any) and translate that into a hash internally ''' self.__data = data - if isinstance(data, list) and len(data) > 0: - reg = self.getRegistry() - if reg.wireProtocol == 'array': - self.__data = {} - for i in range(len(reg.keys)): - try: - self.__data[reg.keys[i]] = data[i] - except: - self.__data[reg.keys[i]] = None + if not data: self.__data = {} + + if isinstance(data, list): + self.__data = {} + if len(data) > 0: + reg = self.getRegistry() + if reg.wireProtocol == 'array': + for i in range(len(reg.keys)): + try: + self.__data[reg.keys[i]] = data[i] + except: + self.__data[reg.keys[i]] = None def osrfNetworkRegisterHint(hint, keys, type='hash'):