[Tutor] Overriding equality tests in Python

Dave Angel davea at davea.name
Sat Mar 23 16:07:53 CET 2013


On 03/23/2013 10:35 AM, Robert Sjoblom wrote:
>> As I said, I don't really understand why a roulette outcome has a name in
>> the first place, but given that it does, I don't any problem with comparing
>> the names directly. Still, I would probably write it as an __eq__ method,
>> since it's easier to write a == b than a.name == b.name.
> I figured that it would be easier if outcomes had names. Consider that
> each Bin (where the ball lands) can contain between 2 to 14 different
> winning outcomes. Each Bin() collects various Outcome()s, each
> Outcome() handles the amount won. Consider the '1' Bin, it contains
> the following winning Outcome()s:
>   “1”, “Red”, “Odd”, “Low”, “Column 1”, “Dozen 1-12”, “Split 1-2”,
> “Split 1-4”, “Street 1-2-3”, “Corner 1-2-4-5”, “Five Bet”, “Line
> 1-2-3-4-5-6”, “00-0-1-2-3”, “Dozen 1”. All of these bets will payoff
> if the wheel spins a “1”.
>
> I'm almost done with the Outcome() class (just writing the unittests
> for it), after that I'll tackle the Bin class, at which point I will
> definitely return for more questions. As I said before, thanks to
> everyone who answered.
>

So you're using the name attribute to match the Outcome instance in the 
Bin slot against the Outcome instance in the Betting slot?  Have you 
considered just making exactly one instance of each Outcome, and then 
you can use something like:

for mybet in bets:
     if mybet.outcome in bin[1]:
            ...do calculation

bin is a simple list describing the wheel, and mybet describes an 
individual bet.  mybet.outcome is the particular Outcome, like "Odd".

-- 
DaveA


More information about the Tutor mailing list