Oops, forgot to reply all. Chris Henk ----- Forwarded by Christopher Henk/US/ATD/GMC on 08/31/2007 04:55 PM -----
Christopher Henk/US/ATD/GMC 08/31/2007 04:13 PM To "Ara Kooser" <[EMAIL PROTECTED]> cc Subject Re: [Tutor] Starting classes The class definition will only have the methods and/or the variables in its definition. So these two functions make up your class class Area: def _init_(self, name, description): self.name = name def look(here): "Look around the place you are in" print here.description looking at the class code: your init function only has one underscore before and after init, you want two, that is why you are getting the error. def __init__(self, name, description): Also you are requiring two arguments to make an Area class, the name and the description. If you try to create an instance using only the name (as you do below) the interpreter will again raise an error. def look(here): "Look around the place you are in" print here.description Not sure if this works as is, I believe it depends on the interpreter, but it is customary to use the word self as the first parameter, and then also change here in the function body def look(self): "Look around the place you are in" print self.description Getting into the code below the class definition: >outside1 = Area("Outside") This will raise an error since you required two parameters to create an Area class and you only provide one. You can either add the description here or leave it off in the __init__ function. Since most likely every area will have a description , I would add it here. outside1 = Area("Outside","You are standing outside with the town gate to your back") outside1.description = "You are standing outside with the town gate to your back" (see above, and below) self.contents.append("dirt") Here we have two problems. The first is the class doesn't have the "contents" attribute yet That's only a problem since you are trying to call a function with it. When you assign to an attribute (like with "description" in the line above), you are adding the attribute to you class instance ("outside1"), however you need to add it before you can use it. Second, you only use self from within the function definition. In this case you would want to use outside1.contents. look(bedroom) Since look was defined in the class definition, you would want to call it like this. bedroom.look() But as of right now there is no bedroom created, so this will give an error. however you can instead look outside. outside1.look() Looking at your code I would have a class something like this: class Area: #what does an area have that makes it an area? contents=None name=None description=None paths=None #where you can go def __init__(self, name, description): #define what everything will start as self.name = name self.discription=None self.contents=[] self.paths={} #Methods: #what can you do to an Area? def look(self): "Look around the place you are in" print self.description def addSomething(self,thing): "adds something to the contents" def removeSomething(self,thing) "remove from contents" def addPath(self,direction,area) "Adds a connection to area" #... #more as needed Chris Henk "Ara Kooser" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 08/31/2007 03:06 PM To tutor@python.org cc Subject [Tutor] Starting classes 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): 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" self.contents.append("dirt") look(bedroom) 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? Thank you. Ara -- Quis hic locus, quae regio, quae mundi plaga. Ubi sum. Sub ortu solis an sub cardine glacialis ursae. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor