[Tutor] custom container subclassing list-- slices are lists!?

John Fouhy john at fouhy.net
Mon Aug 21 23:07:52 CEST 2006


On 22/08/06, Marcus Goldfish <magoldfish at gmail.com> wrote:
> >>> class MyFoo(list):
>            def __init__(self, inlist):
>                   self = inlist[:]

Um, I'm fairly sure this line is not doing what you think it is doing!

self is just a local variable.  When __init__ is called, self is bound
to the MyFoo instance.  But when you do 'self = inlist[:]', you just
rebind it to a copy of inlist.  You aren't changing self..

> >>> me = MyFoo(range(10))
> >>> type(me)
> <class '__main__.MyFoo'>
>
> >>> type(me[0:3])
> <type 'list'>

Have you tried implementing __getitem__ and __setitem__ for slice objects?
(see http://docs.python.org/ref/sequence-methods.html and
http://docs.python.org/ref/sequence-types.html#l2h-231)

-- 
John.


More information about the Tutor mailing list