在这里完成新手程序员。过去几周我一直在阅读Zed的 Learn Python the Hard Way 一书,以涵盖编程的基础知识,我发现自己处于停滞状态。我或多或少地跟踪了他一直在向我投掷的一切,但是一旦我发现自己在练习43,Zed似乎已经把我抛到了一边。他概述了,我认为我理解,类创建的基础知识以及访问其中的变量和函数以及类继承。一旦我练习了43,Zed似乎忘了解释一个关于类如何相互交互的大块,特别是使用 return 函数(或者我可能是那个没有一直关注得很好)。我浏览了下一章,他似乎根本没有解释,所以我来到这里。
我想了解以下几行代码中不同的“场景”转换情况(删节,我拿出了很多'绒毛'):
我有几个大问题: 返回函数如何在类中起作用?
返回函数在CentralCorridor()类(或Map()和Engine()类中)做了什么?
Map()和Engine()类如何相互作用以改变场景?
并且相关性稍差: Zed的书的以下几章是否对我有用,或者如果我在这里挣扎,我应该去别处寻求python帮助吗?
答案 0 :(得分:0)
return
语句不一定在类中使用,更具体地说,在一个碰巧在类中的函数中。因此,当您在类中调用该函数时,将返回该函数。与正常功能没什么不同。
您创建要在Map()
类中使用的Engine()
类的实例。如果您在play
中的Engine
函数中看到它,则会调用opening_scene()
,这似乎仅限于Map()
类。这就是您将Map
的实例传递给Engine
的原因。
我刚才做了LPTHW,所以我不记得后面的章节了。如果您觉得自己没有从一个教程中学习,也许可以尝试另一个(我实际上是从Codecademy到LPTHW,因为Codecademy在教授课程方面并不是那么出色(或者可能只是我:p))
答案 1 :(得分:0)
在pastebin上的代码中,return
使用了类的内部方法,而不是直接在类内部。在一个方法(只是一个与一个对象相关联的函数,真的)return
就像在常规函数中一样工作 - 它将一些数据(或什么都没有)传递给任何调用它的东西并将控制返回给调用者所以调用代码可以继续。
Map对象管理不同的场景对象,并提供一个方法next_scene
,可用于检索给定名称的场景对象。调用next_scene
时,传入的字符串将用作名为scenes
的字典中的键。 scenes
中的值是表示不同场景的对象。一旦在字典中找到了正确的场景对象,Map
就会返回它。
Engine类有一个注意方法play
。这基本上是一个无限循环,在每次传递时它使用Map对象来检索场景,然后在enter_scene
给出的任何场景上调用Map
。场景中有一个字符串标识下一个场景,然后检索,输入等。此循环一直持续到输入场景Death
为止,此时调用退出程序结束。
希望这有一定道理,玩得开心!
答案 2 :(得分:0)
return
是类enter
或CentralCorridor
中名为Death
的方法的一部分。所以这个方法只会在调用时返回一个值,如果满足条件:
>>> 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
)时,用户会完成地图的更改。下一个地图的名称取决于当前地图的值和值。例如,如果地图是中央走廊,则更改地图的可能值为dodge
和tell a joke
。任何其他答案都会让你走进走廊。