On Jun 13, 1:38 pm, Mike Kent <[EMAIL PROTECTED]> wrote: > For Python 2.5 and new-style classes, what special method is called > for mylist[2:4] = seq and for del mylist[2:4] (given that mylist is a > list, and seq is some sequence)? > > I'm trying to subclass list, and I'm having trouble determining what > special methods I have to override in my class for the above two > operations. From my testing, it seems to be __setslice__ for both, > but the docs say __setslice__ and brethren are deprecated. I would > have thought that __setitem__ and __delitem__ would be what was > called, but again, my testing says otherwise.
Or you could forget this "subclassing" stuff, and just implement __setitem__, __getitem__, __delitem__, __len__, and __iter__ in your own class, and not worry about what list does or doesn't do. You could have your class contain a list to implement with, and then delegate to it from your class's code. Overall, I think Python as a language favors composition/delegation over inheritance - c/d is so easy to do with __getattribute__, and inheritance is largely unnecessary since type/interface is not checked until runtime. Yet many O-O texts are written around C++ and Java's static type models, so we see a preponderance of patterns and conventional O-O wisdom recommending inheritance. For Python, it ain't necessarily so... -- Paul -- http://mail.python.org/mailman/listinfo/python-list