Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- from collections import Callable
- class DefaultList(list):
- def __init__(self, items=None, default=None, invoke_default=None):
- super().__init__(items or list())
- if (invoke_default
- or (invoke_default is None and isinstance(default, Callable))):
- self._default = default
- else:
- self._default = lambda: default
- def __getitem__(self, index):
- return (self._default() if index >= len(self)
- else super().__getitem__(index))
- def __setitem__(self, index, obj):
- if index >= len(self):
- n = index - len(self) + 1
- self.extend(self._default() for _ in range(n))
- super().__setitem__(index, obj)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement