Python回溯和命名错误

Python回溯和命名错误,python,nameerror,traceback,Python,Nameerror,Traceback,我对编程很陌生。我一直试图通过一本名为《为绝对初学者编写Python编程》的书来学习Python。我在上课。我从书中的一个练习中复制了一些代码,并得到了一个回溯(最近一次调用last):和NameError消息。下面是我在代码中遇到的错误消息。请帮忙。谢谢 Traceback (most recent call last): File "C:\Python27\Ch8 Critter Caretaker Prg.py", line 5, in <module> class C

我对编程很陌生。我一直试图通过一本名为《为绝对初学者编写Python编程》的书来学习Python。我在上课。我从书中的一个练习中复制了一些代码,并得到了一个回溯(最近一次调用last):和NameError消息。下面是我在代码中遇到的错误消息。请帮忙。谢谢

Traceback (most recent call last):
 File "C:\Python27\Ch8 Critter Caretaker Prg.py", line 5, in <module>
   class Critter(object):
 File "C:\Python27\Ch8 Critter Caretaker Prg.py", line 25, in Critter
   mood = property(__get_mood)
NameError: name '_Critter__get_mood' is not defined
回溯(最近一次呼叫最后一次):
文件“C:\Python27\Ch8 Critter-Caretaker Prg.py”,第5行,在
类生物(对象):
文件“C:\Python27\Ch8 Critter Caretaker Prg.py”,第25行,在Critter中
mood=属性(\uu获取\u mood)
NameError:未定义名称“\u Critter\uuuu get\u mood”
#动物管理员
#要照顾的虚拟宠物
类生物(对象):
“虚拟宠物”
定义初始化(self,name,饥饿=0,无聊=0):
self.name=名称
饥饿
无聊
定义通过时间(自身):
自我饥饿+=1
self.bordedom+=1
定义获取模式(自):
不快乐=自我饥饿+自我厌倦
如果不快乐<5:
mood=“高兴”

这是一个简单的打字错误。你定义

def __get_mode(self):
#          ^^^
但是访问

_Critter__get_mood
#              ^^^

这是一个简单的打字错误。你定义

def __get_mode(self):
#          ^^^
但是访问

_Critter__get_mood
#              ^^^

如前所述,您在
模式
情绪
之间输入了一个错误。但是,稍后您会遇到更多问题-您的
\uu get\u mood
函数从未实际获取过情绪,因为它永远不会返回。此外,您还可以使用
属性
作为装饰器:

@property
def mood(self):
    unhappiness = self.hunger + self.boredom
    if unhappiness < 5:
        return "happy"
    elif 5 <= unhappiness <= 10:
        return "okay"
    elif 11 <= unhappiness <= 15:
        return "frustrated"
    else:
        return "mad"
@属性
情绪(自我):
不快乐=自我饥饿+自我厌倦
如果不快乐<5:
返回“快乐”

如前所述,您在
模式
情绪
之间输入了一个错误。但是,稍后您会遇到更多问题-您的
\uu get\u mood
函数从未实际获取过情绪,因为它永远不会返回。此外,您还可以使用
属性
作为装饰器:

@property
def mood(self):
    unhappiness = self.hunger + self.boredom
    if unhappiness < 5:
        return "happy"
    elif 5 <= unhappiness <= 10:
        return "okay"
    elif 11 <= unhappiness <= 15:
        return "frustrated"
    else:
        return "mad"
@属性
情绪(自我):
不快乐=自我饥饿+自我厌倦
如果不快乐<5:
返回“快乐”

elif 5看起来您打算将
\uu get\u mode(self)
定义为
\uu get\u mood(self)


为了澄清您得到的
名称错误
,解释器说
\u Critter\u get\u mood没有定义
,而不是
\u get\u mood没有定义
,因为,这是Python的一种幻想,表示类中的
私有
变量或方法。

看起来您打算将
\u get\u mode(self)
定义为
\u get\u mood(self)


为了澄清您得到的
名称错误
,解释器说
\u Critter\u get\u mood没有定义
,而不是
\u get\u mood没有定义
,因为,这是Python对类中的
private
变量或方法的一些幻想。

如果本书建议使用前导双下划线,请小心处理。有没有解释为什么代码不使用一个下划线?如果本书建议使用前导双下划线,请小心处理。有没有解释为什么代码不使用一个下划线?