subclassing 'list'

James Stroud jstroud at mbi.ucla.edu
Tue Jan 6 15:45:53 EST 2009


akineko wrote:
> Hello everyone,
> 
> I'm creating a class which is subclassed from list (Bulit-in type).
> 
> It works great.
> However, I'm having a hard time finding a way to set a new value to
> the object (within the class).
> There are methods that alter a part of the object (ex. __setitem__()).
> But I couldn't find any method that can replace the value of the
> object.
> I wanted to do something like the following:
> 
> class Mylist(list):
> 
>     def arrange(self):
>         new_value = ....
>         list.self.__assign__.(self, new_value)
> 
> I serached the newsgroup and found that assignment operator ('=')
> cannot be overridden because it is not an operator. But it shouldn't
> stop Python to provide a way to re-assign the value internally.
> 
> Any suggestions will be highly appreciated.
> 
> Best regards,
> Aki-

Slice assignment will behave as you like:

py> class Mylist(list):
...     def arrange(self):
...         new_value = [1, 2, 3]
...         self[:] = new_value
...
py> m = Mylist()
py> m.arrange()
py> m
[1, 2, 3]

Your other option is to arrange the list in-place, depending on what it 
means to arrange the list. You may want to provide a more explicit example.



More information about the Python-list mailing list