Thanks to all of the tutors on this mailing list!  I'm
finally making some headway!  I originally decided to
tackle my problem one operator at a time:

class MyList:
        def __init__(self, aList=None):
                if aList is None:
                        self.mylist = []
                else:
                        self.mylist = aList[:]
        def __getitem__(self, index):
                return self.mylist[index]

However, I got the following error:

>>> from MyList import *
>>> x = MyList([1,2,3])
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "MyList.py", line 8, in __getitem__
    self.mylist[index]
AttributeError: MyList instance has no attribute
'__setitem__'
>>> x.mylist[0]
1

I did the obvious and created __setitem__.

class MyList:
        def __init__(self, aList=None):
                if aList is None:
                        self.mylist = []
                else:
                        self.mylist = aList[:]
        def __getitem__(self, index):
                return self.mylist[index]
        def __setitem__(self, index, value):
                self.mylist[index] = value

Why does __getitem require __setitem__?  Don't they do
different things?


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to