Why no list heritable type?
Steve Holden
steve at holdenweb.com
Thu Dec 16 16:07:59 EST 2004
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
More information about the Python-list
mailing list