In the program below, how does the value "Poochie" know where to go in the line

crit = Critter("Poochie")

And how do the get_name and set_name functions know when to do their thing, they don't seem to get called or anything? Thanks.

# Property Critter
# Demonstrates get and set methods and properties

class Critter(object):
    """A virtual pet"""
    def __init__(self, name):
        print "A new critter has been born!"
        self.__name = name
        
    def get_name(self):
        return self.__name
    
    def set_name(self, new_name):
        if new_name == "":
            print "A critter's name can't be the emty string."
        else:
            self.__name = new_name
            
    name = property(get_name, set_name)
    
    def talk(self):
        print "\nHi, I'm", self.name
        
# main
crit = Critter("Poochie")
crit.talk()

print "\nMy critter's name is:",
print crit.name
print "\nAttempting to change my critter's name."
crit.name = "Randolph"

crit.talk()

raw_input("\n\nPress the enter key to exit.")

A few comments

# main
crit = Critter("Poochie") # <---- At instance creation, the method __init__ is called. 'Poochie' is used as the parameter name in this call. THat's how Poochie knows where to go.
crit.talk()

print "\nMy critter's name is:",
print crit.name  # <----  When getting the value of the property 'name', the method get_name is called. The effect is the same as print crit.get_name()
print "\nAttempting to change my critter's name."
crit.name = "Randolph" # <---- When setting the value of the property, the method set_name is called. The effect is the same as calling crit.set_name("Randolph")

crit.talk()

raw_input("\n\nPress the enter key to exit.")
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.