[Python-ideas] clear() method for lists

Mark Summerfield list at qtrac.plus.com
Fri Apr 3 13:15:20 CEST 2009

On 2009-04-03, Andre Roberge wrote:
> Hi everyone,
> On the general Python list, a suggestion was made to add a clear() method
> to list, as the "obvious" way to do
> del some_list[:]
> or
> some_list[:] = []
> since the clear() method is currently the obvious way to remove all
> elements from dict and set objects.
> I believe that this would be a lot more intuitive to beginners learning the
> language, making Python more uniform.
> André


I have a use case for list.clear() (might be a bit obscure though).

If you have a class that includes a list as an attribute (e.g., a list
"subclass" that uses aggregation rather than inheritance), you might
want to delegate many list methods to the list attribute and only
implement those you want to treat specially. I show an example of this
in "Programming in Python 3" (pages 367/8) where I have a @delegate
decorator that accepts an attribute name and a tuple of methods to
delegate to, e.g.:

    @delegate("__list", ("pop", "__delitem__", "__getitem_", ...))
    class MyList:
	def clear(self):
	    self.__list = []

But because there is no list.clear(), the clear() method must be
implemented rather than delegated even though it doesn't do anything


Mark Summerfield, Qtrac Ltd, www.qtrac.eu
    C++, Python, Qt, PyQt - training and consultancy
	"Programming in Python 3" - ISBN 0137129297

More information about the Python-ideas mailing list