Advertisement
Guest User

DefaultList

a guest
Feb 5th, 2013
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.74 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. from collections import Callable
  3.  
  4. class DefaultList(list):
  5.     def __init__(self, items=None, default=None, invoke_default=None):
  6.         super().__init__(items or list())
  7.         if (invoke_default
  8.            or (invoke_default is None and isinstance(default, Callable))):
  9.             self._default = default
  10.         else:
  11.             self._default = lambda: default
  12.  
  13.     def __getitem__(self, index):
  14.         return (self._default() if index >= len(self)
  15.                 else super().__getitem__(index))
  16.  
  17.     def __setitem__(self, index, obj):
  18.         if index >= len(self):
  19.             n = index - len(self) + 1
  20.             self.extend(self._default() for _ in range(n))
  21.         super().__setitem__(index, obj)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement