[merge] Install merged dict on object

This commit is contained in:
Behdad Esfahbod 2014-03-28 14:41:53 -07:00
parent 0d5fcf498c
commit 82c54638e3

View File

@ -91,6 +91,7 @@ def mergeObjects(lst):
assert all(type(item) == clazz for item in lst), lst assert all(type(item) == clazz for item in lst), lst
logic = clazz.mergeMap logic = clazz.mergeMap
returnTable = clazz() returnTable = clazz()
returnDict = {}
allKeys = set.union(set(), *(vars(table).keys() for table in lst)) allKeys = set.union(set(), *(vars(table).keys() for table in lst))
for key in allKeys: for key in allKeys:
@ -106,7 +107,9 @@ def mergeObjects(lst):
continue continue
value = mergeLogic(getattr(table, key, NotImplemented) for table in lst) value = mergeLogic(getattr(table, key, NotImplemented) for table in lst)
if value is not NotImplemented: if value is not NotImplemented:
setattr(returnTable, key, value) returnDict[key] = value
returnTable.__dict__ = returnDict
return returnTable return returnTable