[Tutor] access class through indexing?

Alex Hall mehgcap at gmail.com
Wed Aug 4 22:17:31 CEST 2010

Hi all,
Further to my questions about overriding builtin methods earlier, how
would I make a class able to be accessed and changed using index
notation? For example, take the following:
deck=CardPile(52) #creates a new deck of cards
print(len(deck)) #prints 52, thanks to my __len__ function
for c in deck: print c #also works thanks to __iter__
print(deck[4]) #fails with a list index out of range error
How would I get the last one working? I tried __getattr__(self, i),
but it did not work. I want to be able to get an arbitrary item from
the "pile" of cards (which can be a deck, a hand, whatever), and/or
set an element. A "pile" is just a list of Card objects, so I would
only need to use sequence indexing, not mapping functions.

Have a great day,
Alex (msg sent from GMail website)
mehgcap at gmail.com; http://www.facebook.com/mehgcap

More information about the Tutor mailing list