James Stroud wrote:
The thread "why not arrays" got me thinking. I would really like to inherit from a list so that I can add methods based on its contents, say if I filled it with a type of object and wanted to iterate over all objects. I have built a wrapper around a list like this for general use:
class list_of_objects: def __init__(self): self.data = [] def __len__(self): return len(self.data) etc ...
Then it can be heritable and I can add or override methods. Why aren't built in lists and dictionaries real heritable types that can save this kind of patchwork? Is there a pythonic reason I am missing here?
I think the thing you are really missing is the fact that list and the other built-in types can be used as the basis for inheritance:
Python 2.4 (#1, Dec 4 2004, 20:10:33)
[GCC 3.3.3 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> class fooList(list):
... def bar(self):
... for item in self:
... print "Bar:", item
...
>>> fl = fooList(('one', 'two', 'three'))
>>> fl.append("four")
>>> fl.bar()
Bar: one
Bar: two
Bar: three
Bar: four
>>> type(fl)
<class '__main__.fooList'>
>>>You do need to be somewhat careful, though, to understand the initialisation mechanism of the new object-based types if you are going to get the best out of them.
regards Steve -- Steve Holden http://www.holdenweb.com/ Python Web Programming http://pydish.holdenweb.com/ Holden Web LLC +1 703 861 4237 +1 800 494 3119 -- http://mail.python.org/mailman/listinfo/python-list
