'Create a copy of a NumDict
:return: A copy'

def copy(self):

    if (self.__class__ is NumDict):
        return NumDict(self.data.copy())
    import copy
    data = self.data
    try:
        self.data = {}
        c = copy.copy(self)
    finally:
        self.data = data
    c.update(self)
    return c
