Wouldn't ``d = copy.deepcopy(self.__dict__)`` provide the desired effect? And even be less shallow? ;)