list inheritance or delegation?
Robert Brewer
fumanchu at amor.org
Tue Mar 16 12:51:43 EST 2004
George Young wrote:
> I need an object that behaves much like a list, but has some
> additional features. It seems that I can do this either by
> inheriting from type list, or by emulating list by defining
> __len__, __getitem__, and maybe a bunch of other methods. Thirdly,
> I could inherit from UserList, but that's deprecated now.
>
> Inheriting from list would save me implementing a bunch of methods
> that I might want. But if I inherit from list, how do I get access
> to the data? E.g., I need a customized 'setitem' method that does
> the insert and then does some other things too. With
> UserList, I could:
>
> class mylist(UserList):
> def __setitem__(self,i,y):
> self.dostuff(y)
> self.data[i]=y
>
> but when inheriting from 'list', I'm not sure how to do this.
I'll let others answer the deeper questions. For now, just wanted to
recommend you call the superclass to handle your __setitem__ example
(subclassing from list):
class mylist(list):
def __setitem__(self, key, value):
dostuff(value)
list.__setitem__(self, key, value)
HTH!
Robert Brewer
MIS
Amor Ministries
fumanchu at amor.org
More information about the Python-list
mailing list