changing the List's behaviour?
Heather Coppersmith
me at privacy.net
Mon Jul 28 10:13:26 EDT 2003
More information about the Python-list mailing list
Mon Jul 28 10:13:26 EDT 2003
- Previous message (by thread): changing the List's behaviour?
- Next message (by thread): changing the List's behaviour?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, 28 Jul 2003 14:46:14 +0200, Peter Otten <__peter__ at web.de> wrote: > meinrad recheis wrote: >> i want to change the List so that it returns None if the index for >> accesssing list elements >> is out of bound. > If you really need it, you can write a class similar to the one below: > class DefaultList(list): > def __init__(self, sequence=[], default=None): That's asking for trouble. That mutable default argument for sequence is evaluated at class definition-time, and all instances of DefaultList created without a sequence argument will end up sharing one list. Do this instead: class DefaultList( list ): def __init__( self, sequence = None, default = None ): if sequence is None: sequence = [ ] > list.__init__(self, sequence) > self.default = default > def __getitem__(self, index): > try: > return list.__getitem__(self, index) > except IndexError: > return self.default > if __name__ == "__main__": > theList = DefaultList("abc", "?") > print theList[1] > print theList[99] > theList = DefaultList(default="X") > print theList[1] Regards, Heather -- Heather Coppersmith That's not right; that's not even wrong. -- Wolfgang Pauli
- Previous message (by thread): changing the List's behaviour?
- Next message (by thread): changing the List's behaviour?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list