I'm new to Python, and I've just reached the OOP chapter in my programming textbook.
The textbook does not explain how property()
works.
How does property()
know to change the name to new_name
and not new_name + "lololol"
?
I created set_name2
because I wanted to see how property()
works. But to my surprise the name did not change to new_name + "lololol"
.
# Property Critter
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 an empty string."
else:
self.__name = new_name
print "Name change successful."
def set_name2(self, new_name):
self.__name = new_name + "lololol"
print "Name change successful (set_name2!)"
name = property(get_name, set_name, set_name2)
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 = ""
print "\nAttempting to change my critter's name again."
crit.name = "Randolph"
crit.talk()
raw_input("\n\nPress enter to exit.")