理解python 2中的类[艰苦学习python练习43]

理解python 2中的类[艰苦学习python练习43],python,class,python-2.7,return,Python,Class,Python 2.7,Return,完全新手程序员在这里。在过去的几周里,我一直在阅读Zed的《艰难地学习Python》一书,学习编程的基础知识,我发现自己处于停顿状态。我或多或少地一直在关注着他向我抛来的一切,但一旦我在练习43中发现自己,Zed似乎已经把我抛到了一边。他概述了类创建的基础知识,以及访问其中的变量和函数,还有一些关于类继承的知识,我想我已经理解了。当我开始练习43时,Zed似乎忘记了解释一大块关于类如何相互交互的内容,特别是使用返回函数(或者可能是我不够注意)。我浏览了下一章,他似乎根本没有解释,所以我来到这里

完全新手程序员在这里。在过去的几周里,我一直在阅读Zed的《艰难地学习Python》一书,学习编程的基础知识,我发现自己处于停顿状态。我或多或少地一直在关注着他向我抛来的一切,但一旦我在练习43中发现自己,Zed似乎已经把我抛到了一边。他概述了类创建的基础知识,以及访问其中的变量和函数,还有一些关于类继承的知识,我想我已经理解了。当我开始练习43时,Zed似乎忘记了解释一大块关于类如何相互交互的内容,特别是使用返回函数(或者可能是我不够注意)。我浏览了下一章,他似乎根本没有解释,所以我来到这里

我想了解以下代码行中不同的“场景”是如何转换的(节略,我去掉了很多“绒毛”):

我有几个大问题: 返回函数在类中是如何工作的

返回函数在CentralCorridor()类(或Map()和Engine()类)中做什么

Map()和Engine()类如何相互协作来更改场景

但相关程度稍低:
Zed书中的以下几章对我这个新手有好处吗?如果我在这里遇到困难,我应该到别处寻找python帮助吗?

return语句不一定在类中使用,更具体地说,是在类中的函数中使用。因此,当您在类中调用函数时,将返回该函数。它和普通函数没有什么不同

您可以创建
Map()
类的实例,以便在
Engine()
类中使用。如果在
Engine
中的
play
函数中看到,它将调用
opening\u scene()
,这似乎仅限于
Map()
类。这就是为什么您将
Map
的实例传递给
Engine


我刚才做过LPTHW,所以我不记得后面的章节了。如果你觉得你没有从一个教程中学习,也许可以尝试另一个(实际上我从Codecademy转到了LPTHW,因为Codecademy不太擅长教学(或者可能只是我:p))

在pastebin上的代码中,你在类的方法中使用了
return
,而不是直接在类中使用。在一个方法中(实际上只是一个与对象关联的函数)
return的工作原理与在常规函数中的工作原理相同——它将一些数据(或什么都不传递)传回给调用它的任何对象,并将控制权返回给调用方,以便调用代码可以继续

贴图对象管理不同的场景对象,并提供一种方法,
next\u scene
,可用于检索给定名称的场景对象。调用
next_scene
时,传入的字符串用作名为
scenes
的字典中的键。
场景
中的值是表示不同场景的对象。在字典中找到正确的场景对象后,
Map
将返回该对象

Engine类有一个注释方法,
play
。这本质上是一个无限循环,在每次传递时,它都使用贴图对象检索场景,然后在
Map
给定的任何场景上调用
enter\u scene
。该场景有一个字符串,标识下一个场景,然后检索、输入等。该循环一直持续到输入场景
死亡
,此时退出调用结束程序


希望这有点道理,用Python玩得开心

返回是类
CentralCorridor
Death
中名为
enter
的方法的一部分。因此,调用此方法时,如果满足条件,则该方法将仅返回一个值:

>>> corridor = CentralCorridor(scene_map)
>>> result = corridor.enter() # Here the program waits for you to write something
>tell a joke
>>> print result
laser_weapon_armory
此机制由
引擎
类的
播放
方法内部使用

当程序要求用户输入值(
raw\u input
)时,地图的更改由用户完成。下一个贴图的名称取决于当前贴图的值和。例如,如果地图是中央走廊,则更改地图的可能值为
dodge
讲笑话
。任何其他答案都会把你留在走廊里