Thanks for your explanation and pointer. "Mike Driscoll" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > On Feb 21, 7:34 am, "Poppy" <[EMAIL PROTECTED]> wrote: >> I've been searching online to try get a better understanding of what >> "self" >> does when I define this parameter in my class functions. All I'm finding >> is >> debates on whether "self" has any value to the language but that doesn't >> help me in my newbie question. So the code excerpt below is from >> "Beginning >> Python" Norton, Samuel, Aitel, Foster-Johnson, Richardson, Diamon, >> Parker, >> and Roberts. >> >> What I think "self" is doing is limiting the function call to only >> function >> in "this" class. So in the function below "has" calls self.has_various(), >> if >> I had a function called "has_various" in my program or another included >> class using "self" insures that the "has_various" below is the one used. >> Am >> I correct in my understanding? >> >> thanks, >> >> Zach- >> >> def has(self, food_name, quantity=1): >> """ >> has(food_name, [quantity]) - checks if the string food_name is in the >> fridge. quantity defaults to 1 >> returns True if there is enough, false otherwise. >> """ >> >> return self.has_various({food_name:quantity}) >> >> def has_various(self, foods): >> """ >> has various(foods) determines if the dictionary food_name >> has enough of every element to satisfy a request. >> returns true if there's enough, Fasle if there's not or if an element >> does >> not exist. >> """ >> try: >> for food in foods.keys(): >> if self.items[food] < foods[food]: >> return False >> return True >> except KeyError: >> return False > > I think you are correct. The term "self" is a convention more than > anything. You can use another name, but it's not recommended as 99% of > developers expect it to be called "self". > > You can read up on it here: > http://www.diveintopython.org/object_oriented_framework/defining_classes.html > > In there, they define it this way and I quote: > > "The first argument of every class method, including __init__, is > always a reference to the current instance of the class. By > convention, this argument is always named self. In the __init__ > method, self refers to the newly created object; in other class > methods, it refers to the instance whose method was called. Although > you need to specify self explicitly when defining the method, you do > not specify it when calling the method; Python will add it for you > automatically." > > Hope that helps. > > Mike
-- http://mail.python.org/mailman/listinfo/python-list