1.1 --- a/lib/__builtins__/list.py Wed Nov 23 17:23:52 2016 +0100
1.2 +++ b/lib/__builtins__/list.py Wed Nov 23 17:32:58 2016 +0100
1.3 @@ -34,13 +34,12 @@
1.4 # Reserve an attribute for a fragment reference along with some space
1.5 # for elements.
1.6
1.7 - self.__data__ = native._list_init(len(args))
1.8 + self.__data__ = native._list_init(args is not None and len(args) or 0)
1.9
1.10 if args is not None:
1.11 self.extend(args)
1.12
1.13 def __contains__(self, value): pass
1.14 - def __setitem__(self, index, value): pass
1.15 def __delitem__(self, index): pass
1.16 def __setslice__(self, start, end, slice): pass
1.17 def __delslice__(self, start, end): pass
1.18 @@ -84,26 +83,9 @@
1.19
1.20 def __str__(self):
1.21
1.22 - "Return a string representation of the list."
1.23 -
1.24 - b = buffer()
1.25 - i = 0
1.26 - l = self.__len__()
1.27 - first = True
1.28 -
1.29 - # NOTE: Should really show quoted forms of the items.
1.30 + "Return a string representation."
1.31
1.32 - b.append("[")
1.33 - while i < l:
1.34 - if first:
1.35 - first = False
1.36 - else:
1.37 - b.append(", ")
1.38 - b.append(repr(self.__get_single_item__(i)))
1.39 - i += 1
1.40 - b.append("]")
1.41 -
1.42 - return str(b)
1.43 + return self._str("[", "]")
1.44
1.45 __repr__ = __str__
1.46
1.47 @@ -130,4 +112,13 @@
1.48
1.49 return native._list_element(self, index)
1.50
1.51 + def __set_single_item__(self, index, value):
1.52 +
1.53 + "Set at the normalised (positive) 'index' the given 'value'."
1.54 +
1.55 + if index >= len(self):
1.56 + raise IndexError(index)
1.57 +
1.58 + return native._list_setelement(self, index, value)
1.59 +
1.60 # vim: tabstop=4 expandtab shiftwidth=4