From 1d44f598e55d33874bdc149f45ac4cd10db639e7 Mon Sep 17 00:00:00 2001 From: erickson Date: Thu, 26 Jul 2007 20:30:16 +0000 Subject: [PATCH] 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 --- src/python/osrf/net_obj.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) 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'): -- 2.43.2