Why does list.__getitem__ return a list instance for subclasses of the list type?
dackz
dackze at gmail.com
Tue Feb 6 11:44:43 EST 2007
More information about the Python-list mailing list
Tue Feb 6 11:44:43 EST 2007
- Previous message (by thread): glutInit and wxPython on Mac OSX
- Next message (by thread): when will python 2.5 take in mainstream?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
>>> class ListyThing(list): pass ... >>> assert isinstance(ListyThing()[:], ListyThing) # I expect True! Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError >>> type(ListyThing()[:]) # I expect ListyThing! <type 'list'> I don't find this intuitive. Is this intentional? I believe this could be avoided if list.__getitem__ used "self.__class__()" to make a new instance, instead of "list()", but I don't know how that works under the hood in C. I believe this happens a lot of other cases too. Actually, I wrote up some test cases at http://brodierao.com/etc/listslice/ but I haven't taken a look at it in quite a while. I believe there's some other funky stuff going on there as well. Also, this happens with dict too: >>> class DictyThing(dict): pass ... >>> assert isinstance(DictyThing().copy(), DictyThing) # I expect True! Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError >>> type(DictyThing().copy()) # I expect DictyThing! <type 'dict'> Any thoughts?
- Previous message (by thread): glutInit and wxPython on Mac OSX
- Next message (by thread): when will python 2.5 take in mainstream?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list