An object with __slots__ predefined is faster to access than a dict entry, and also it consumes far less memory.
There is already an Obligation class defined in https://github.com/rht/py-distilledESL/blob/master/economicsl/obligations.py, although it has more information than is needed with the insurance model. There are also other useful functions elsewhere in the library that can be reused in refreshing the obligation list for each time.
This has 2 benefits:
__slots__
predefined is faster to access than a dict entry, and also it consumes far less memory.