If you want to test if one outcome is equal to another, you probably want to
know if

The name of the outcome is the same
The odds of the outcome is the same

So, you'd implement it like so

class Outcome:

   def __eq__(self, other):
       if self.name == other.name and self.odds == other.odds:
           return True
       return False


Make sense?

Nick

On Wed, Jan 19, 2011 at 9:07 AM, Ben Ganzfried <ben.ganzfr...@gmail.com>wrote:

> yeah I was actually pretty confused about those methods as well.  I mean I
> get the general idea that we are testing to see if two outcomes are the same
> (hence a winning bet)...when you say expand on them, what do you mean
> exactly?
>
> Thanks again, really much appreciated!
>
>
> On Tue, Jan 18, 2011 at 4:31 PM, Nick Stinemates <nstinema...@gmail.com>wrote:
>
>> You may also want to look in to the __eq__ and __ne__ methods. You're just
>> re-implementing standard behavior (so redefining them is useless.) You'll
>> probably want to expand on them to be more concise.
>>
>>
>> On Tue, Jan 18, 2011 at 10:00 AM, Ben Ganzfried 
>> <ben.ganzfr...@gmail.com>wrote:
>>
>>> Thanks, Nick!
>>>
>>>
>>> On Tue, Jan 18, 2011 at 12:52 PM, Nick Stinemates <nstinema...@gmail.com
>>> > wrote:
>>>
>>>> Updated inline. Check the updated definiton of winAmount.
>>>>
>>>> Nick
>>>>
>>>> On Tue, Jan 18, 2011 at 9:25 AM, Ben Ganzfried <ben.ganzfr...@gmail.com
>>>> > wrote:
>>>>
>>>>> Hey guys,
>>>>>
>>>>> I'm trying to get a version of Roulette working and I had a quick
>>>>> question.  Here is my code:
>>>>>
>>>>> class Outcome:
>>>>>
>>>>>     def __init__(self, name, odds):
>>>>>         self.name = name
>>>>>         self.odds = odds
>>>>>
>>>>>     def winAmount(self, amount):
>>>>>         return self.odds*amount
>>>>>
>>>>>
>>>>>     def __eq__(self, other):
>>>>>         if (self == other):
>>>>>             return True
>>>>>         else:
>>>>>             return False
>>>>>
>>>>>     def __ne__(self, other):
>>>>>         if (self != other):
>>>>>             return True
>>>>>         else:
>>>>>             return False
>>>>>
>>>>>     def __str__(self):
>>>>>         return "%s (%d:1)" % ( self.name, self.odds )
>>>>>
>>>>> Now whenever I try to call the winAmount method, I get the following
>>>>> error: NameError: global name 'odds' is not defined
>>>>>
>>>>> I'm wondering the following: I had thought that by initializing "odds"
>>>>> in the first initialization method that "odds" should then be accessible 
>>>>> to
>>>>> all the other methods in the class.  This does not seem to be the case.  
>>>>> So
>>>>> what is the ideal fix?  On the one hand I still need to initialize "odds",
>>>>> right?  But if "odds" is within the initialization method, how else can it
>>>>> be accessed by the other methods?
>>>>>
>>>>> Thanks so much!
>>>>>
>>>>> Ben
>>>>>
>>>>> _______________________________________________
>>>>> Tutor maillist  -  Tutor@python.org
>>>>> To unsubscribe or change subscription options:
>>>>> http://mail.python.org/mailman/listinfo/tutor
>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to