0

完整的新手程序员在这里。在过去的几周里,我一直在阅读 Zed 的Learn Python the Hard Way一书以涵盖编程的基础知识,但我发现自己处于停滞状态。我或多或少一直在跟踪他向我扔的所有东西,但是一旦我发现自己在练习 43,Zed 似乎把我扔到了海里。他概述了,我想我理解类创建的基础知识,以及访问其中的变量和函数,以及一些关于类继承的知识。一旦我开始练习 43,Zed 似乎忘记解释一大段关于类如何相互交互的内容,特别是使用return功能(或者也许我是没有足够关注的人)。我浏览了下一章,他似乎根本没有解释,所以我来了。

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

http://pastebin.com/zhntxFxS

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

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

Map() 和 Engine() 类如何相互配合来改变场景?

并且相关性稍差:作为新手,Zed 书中的以下几章是否对我有益,或者如果我在这里遇到困难,我应该在其他地方寻求 python 帮助吗?

4

3 回答 3

0

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

您创建一个类的实例以在Map()该类中使用Engine()。如果您在play函数中看到Engine,它会调用opening_scene(),这似乎仅限于Map()类。这就是您传递 to 实例的Map原因Engine

不久前我做过LPTHW,所以我不记得后面的章节了。如果您觉得您没有从一个教程中学习,也许可以尝试另一个(我实际上是从 Codecademy 转到 LPTHW,因为 Codecademy 在教学方面并不是那么出色(或者可能只是我:p))

于 2013-07-18T22:15:27.703 回答
0

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

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

Engine 类有一个值得注意的方法,play. 这本质上是一个无限循环,在每次通过时,它使用 Map 对象来检索场景,然后调用enter_scene任何场景Map给它。场景有一个标识下一个场景的字符串,然后将其检索、进入等。这个循环一直持续到Death进入场景,此时退出调用结束程序。

希望这有某种意义,用 Python 玩得开心!

于 2013-07-18T22:22:00.643 回答
0

是类return命名的方法的一部分或 。所以这个方法在被调用并且满足条件时只会返回一个值:enterCentralCorridorDeath

>>> corridor = CentralCorridor(scene_map)
>>> result = corridor.enter() # Here the program waits for you to write something
>tell a joke
>>> print result
laser_weapon_armory

play该机制由类的方法在内部使用Engine

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

于 2013-07-18T22:24:29.753 回答