123456789101112131415161718192021222324252627 |
- from __future__ import absolute_import
- # Copyright (c) 2010-2019 openpyxl
- from collections import defaultdict
- class BoundDictionary(defaultdict):
- """
- A default dictionary where elements are tightly coupled.
- The factory method is responsible for binding the parent object to the child.
- If a reference attribute is assigned then child objects will have the key assigned to this.
- Otherwise it's just a defaultdict.
- """
- def __init__(self, reference=None, *args, **kw):
- self.reference = reference
- super(BoundDictionary, self).__init__(*args, **kw)
- def __getitem__(self, key):
- value = super(BoundDictionary, self).__getitem__(key)
- if self.reference is not None:
- setattr(value, self.reference, key)
- return value
|