Why no list heritable type?
Steven Bethard
steven.bethard at gmail.com
Fri Dec 17 19:00:26 EST 2004
Mike Meyer wrote:
> Actually, UserList and UserDict are just wrappers around the builtin
> types. So the performance hit is one Python function call - pretty
> much neglible. But new code should still subclass the builtins.
Interesting that they're not fully compatible with the builtins:
>>> dict(dict=35)
{'dict': 35}
>>> UserDict.UserDict(dict=35)
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\Program Files\Python\lib\UserDict.py", line 7, in __init__
self.update(dict)
File "C:\Program Files\Python\lib\UserDict.py", line 46, in update
self.data.update(dict)
TypeError: iteration over non-sequence
>>> dict(self=[1, 2, 3])
{'self': [1, 2, 3]}
>>> UserDict.UserDict(self=[1, 2, 3])
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
TypeError: __init__() got multiple values for keyword argument 'self'
I wonder why UserDict.UserDict's __init__ and update aren't written like:
def __init__(*args, **kwds):
self, args = args[0], args[1:]
...
'Course I never use these, so I guess what am I complaining about? ;)
Steve
More information about the Python-list
mailing list