【发布时间】:2014-04-09 11:52:29
【问题描述】:
我是 Python 新手,刚刚接触到编程教科书中的 OOP 章节。
教科书没有解释property() 的工作原理。
property() 如何知道将名称更改为new_name 而不是new_name + "lololol"?
我创建set_name2 是因为我想看看property() 是如何工作的。但令我惊讶的是,名称并没有更改为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.")
【问题讨论】:
-
@AshwiniChaudhary 我刚刚阅读了那个网页,但在那里找不到简单的解释。
-
如果您了解 Python 类的基础知识,那么这就是 IMO 的最佳解释。请问一个具体的问题,你是在问一个关于属性的教程。
标签: python python-2.7 properties