How to deepcopy a list of user defined lists?

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Thu Jan 8 03:51:40 EST 2009


On Thu, 08 Jan 2009 13:29:37 +0530, srinivasan srinivas wrote:

> Hi,
> I have a class which is a subclass of builtin-type list.
> 
> 
#------------------------------------------------------------------------------
> class clist(list):
>     def __new__(cls, values, ctor):
>         val = []
>         for item in values:
>             item = ctor(item)
>             val.append(item)
>         
>         self = list.__new__(cls, val)
>         self.__values = val
>         self.__ctor = ctor
>         return self
> 
#-----------------------------------------------------------------------------------
> 
> I have a list of clists, say c1 = [clist1, clist2, clist3] How do i
> deepcopy this list? I tried using copy.deepcopy() method. But i got some
> errors. Please suggest me.


Don't tell us what the errors are, I love guessing games!!!

Let's see... is it TypeError because your class doesn't override the 
list.__init__ method?



>>> clist1 = clist([1,2,3], str)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list() takes at most 1 argument (2 given)


Before you get to deepcopy, you actually need to have clist work 
correctly. Once you've done that, show us what error you get.



-- 
Steven



More information about the Python-list mailing list