21 __slots__ = [
'_item_class',
'_common_attrs',
'_items']
23 def __init__(self, item_class, common_attrs=None, items=None):
35 self.
_items_items += (item,)
41 if not isinstance(item, self.
_item_class_item_class):
42 raise TypeError(
"Only %s objects accepted, got %s."
44 item.__class__.__name__))
45 for attr
in common_attrs:
46 setattr(item, attr, common_attrs[attr])
54 items = list(self.
_items_items)
55 items.insert(index, item)
56 self.
_items_items = tuple(items)
58 def pop(self, *index):
59 items = list(self.
_items_items)
60 result = items.pop(*index)
61 self.
_items_items = tuple(items)
64 def index(self, item, *start_and_end):
65 return self.
_items_items.
index(item, *start_and_end)
71 for item
in self.
_items_items:
75 return iter(self.
_items_items)
78 if not isinstance(index, slice):
79 return self.
_items_items[index]
82 items.extend(self.
_items_items[index])
86 if isinstance(index, slice):
90 items = list(self.
_items_items)
92 self.
_items_items = tuple(items)
95 return len(self.
_items_items)
98 return u'[%s]' %
', '.join(
unicode(item)
for item
in self)
def create(self, *args, **kwargs)
def __getitem__(self, index)
def __init__(self, item_class, common_attrs=None, items=None)
def __setitem__(self, index, item)
def index(self, item, *start_and_end)
def insert(self, index, item)
def _check_type_and_set_attrs(self, *items)
unicode
Exceptions and return codes used internally.