[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