[Tutor] Starting classes
Ricardo Aráoz
ricaraoz at gmail.com
Sat Sep 1 00:50:35 CEST 2007
Eric Brunson wrote:
> Ara Kooser wrote:
>> Hello,
>> I read Alan Gauld's and How to Think Like a Computer Scientist
>> section on classes. So I tried to write a simple room class. My goal
>> is to write a short text adventure using classes. Here is the code:
>>
>> class Area:
>> def _init_(self, name, description):
>>
>
> Not enough underscores, you need two before and after the word "init".
>
>> self.name = name
>>
>>
>> def look(here):
>> "Look around the place you are in"
>> print here.description
>>
>>
>> outside1 = Area("Outside")
>> outside1.description = "You are standing outside with the town gate to
>> your back"
>>
>
> Why not:
>
> outside1 = Area( "Outside", "You are standing outside..." )
>
> and store self.description in the constructor?
To do that you'll need the line :
self.description = description
right after the line assigning name to self.name.
>
>
>
>> self.contents.append("dirt")
>>
>
> What is self? You've only defined self in the class methods and you're
> outside the class definition. Was that just a cut and paste error?
>
>> look(bedroom)
>>
>
> You'll get another error here, I think you want: outside1.look( bedroom )
But bedroom MUST be created before that.
>
>> I get the following error.
>> Traceback (most recent call last):
>> File "/Users/ara/Documents/text_advent.py", line 11, in <module>
>> outside1 = Area("Outside")
>> TypeError: this constructor takes no arguments
>>
>> Do the outside1 = Area("Outside) need to be nested in the class or can
>> they be outside of it?
>>
>
> No, that's correct, because you are instantiating the class and naming
> that instance "outside1".
>
>> Thank you.
>>
>> Ara
>>
>>
>>
>>
>
> Hope that all helps,
> e.
>
More information about the Tutor
mailing list