(obj, key, callback=None)
| 37 | |
| 38 | |
| 39 | def _access_structure(obj, key, callback=None): |
| 40 | key_list = key.split(".") |
| 41 | cur = obj |
| 42 | parent = None |
| 43 | for k in key_list: |
| 44 | parent = cur |
| 45 | if isinstance(cur, (list, tuple)): |
| 46 | k = int(k) |
| 47 | cur = cur[k] |
| 48 | elif isinstance(cur, dict): |
| 49 | cur = cur[k] |
| 50 | else: |
| 51 | cur = getattr(cur, k) |
| 52 | if callable is None: |
| 53 | return cur |
| 54 | return callback(parent, k, cur) |
| 55 | |
| 56 | |
| 57 | def _is_parameter(obj): |