In the following code, in the method
talk(self)
,
self.name
. What self is self.name referring to? I though variables created in functions and methods are only good within that method or function. But here it looks like it's talking to
__init__
&
__str__
. Can someone please explain? It's starting to get complicated and frustrating now. Thanks.
# Attribute Critter
# Demonstrates creating and accessing object attributes
class Critter(object):
"""A virtual pet"""
def __init__(self, name):
print "A new critter has been born!"
self.name = name
def __str__(self):
rep = "Critter object\n"
rep += "name: " + self.name + "\n"
return rep
def talk(self):
print "Hi. I'M", self.name, "\n"
# main
crit1 = Critter("Poochie")
crit1.talk()
crit2 = Critter("Randolph")
crit2.talk()
print "Printing crit1:"
print crit1
print "Directly accessing crit1.name:"
print crit1.name
raw_input("\n\nPress the enter key to exit.")