[Tutor] access class through indexing?

Alex Hall mehgcap at gmail.com
Thu Aug 5 05:23:58 CEST 2010

On 8/4/10, Dave Angel <davea at ieee.org> wrote:
> Alex Hall wrote:
>> On 8/4/10, Evert Rol <evert.rol at gmail.com> wrote:
>>> <snip>
>>> That depends how you create the Pile of 52 cards: list(52) also doesn't
>>> generate 52 (random) items.
>>> If you override __init__ to accept an integer that generates the cards
>>> for
>>> you, this should work.
>> Here is my init, not half as pretty as yours, but it should work.
>> Maybe this will explain the problem.
>> def __init__(self, size, cards=None, fill=False):
>>   #creates a pile of cards. If "fill"==true, it will auto-fill the
>> pile starting from the Ace of Clubs up through the King of Spades,
>> stopping if it exceeds the size arg.
>>   #if the cards arg is not null, it will populate the pile with the
>> cards in the list.
>>   self=[]
>>   if fill: #auto-fill, useful to generate a new, unshuffled deck
>>    for i in range(1, 14):
>>     for j in range(1, 5):
>>      self.append(Card(i, j))
>>     #end for
>>    #end for
>>    self=self[:size] #keep only the amount specified
>>   elif cards is not None: #fill the pile with the cards
>>    for c in cards:
>>     self.append(c)
>>    #end for
>>   #end if
>>  #end def __init__
> You have two serious problems here, and maybe others, I didn't keep looking.
> Since you never call super(), the init of the base class never happens.
> It may happen to work, since you're apparently willing to take its
> default behavior, but I don't know.  But even worse, you never even talk
> to your own object.  The first parameter to __init__() is a ref to the
> actual object you're supposed to be initializing, and you immediately
> overwrite it (self) with another object.  As a result, everything else
> you do in that method is thrown out when the method returns.  Remove
> that line
> self = []
That makes sense, and doing so has fixed everything. I am still not
clear on the whole super() thing; I saw it in another project and
tried to find out about it, but what I found was very confusing, and
super() did not seem terribly important, so I did not pursue the
matter further. Apparently it is important...
> DaveA

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