你要开始学会自食其力了。通过阅读这本书你应该已经学到了一点,那就是你需要的所有的信息网上都有,你只要去搜索就能找到。唯一困扰你的就是如何使用正确的词汇进行搜索。学到现在,你在挑选搜索关键字方面应该已经有些感觉了。现在已经是时候了,你需要尝试写一个大的项目,并让它运行起来。
以下是你的需求:
其他的事情就全靠你了。花一个星期完成这件任务,做一个你能做出来的最好的游戏。使用你学过的任何东西(类,函数,字典,列表……)来改进你的程序。这节课的目的是教你如何构建 class 出来,而这些 class 又能调用到其它 Python 文件中的 class。
我不会详细地告诉你告诉你怎样做,你需要自己完成。试着下手吧,编程就是解决问题的过程,这就意味着你要尝试各种可能性,进行实验,经历失败,然后丢掉你做出来的东西重头开始。当你被某个问题卡住的时候,你可以向别人寻求帮助,并把你的代码贴出来给他们看。如果有人刻薄你,别理他们,你只要集中精力在帮你的人身上就可以了。持续修改和清理你的代码,直到它完整可执行为止,然后再研究一下看它还能不能被改进。
祝你好运,下个星期你做出游戏后我们再见。
这节练习的目的是检查评估你的游戏。也许你只完成了一半,卡在那里没有进行下去,也许你勉强做出来了。不管怎样,我们将串一下你应该弄懂的一些东西,并确认你的游戏里有使用到它们。我们将学习如何用正确的格式构建 class,使用 class 的一些通用习惯,另外还有很多的“书本知识”让你学习。
为什么我会让你先行尝试,然后才告诉你正确的做法呢?因为从现在开始你要学会“自给自足”,以前是我牵着你前行,以后就得靠你自己了。后面的习题我只会告诉你你的任务,你需要自己去完成,在你完成后我再告诉你如何可以改进你的作业。
一开始你会觉得很困难并且很不习惯,但只要坚持下去,你就会培养出自己解决问题的能力。你还会找出创新的方法解决问题,这比从课本中拷贝解决方案强多了。
以前我教过的怎样写好函数的方法一样是适用的,不过这里要添加几条:
你的 class 应该使用 “camel case(驼峰式大小写)”,例如你应该使用 SuperGoldFactory 而不是 super_gold_factory。
你的 __init__ 不应该做太多的事情,这会让 class 变得难以使用。
而不是 myawesomehair 或者 MyAwesomeHair 。
用一致的方式组织函数的参数。如果你的 class 需要处理 users、dogs、和 cats,就保持这个次序(特别情况除外)。如果一个函数的参数是 (dog, cat, user) ,另一个的是 (user, cat, dog) ,这会让函数使用起来很困难。
不要对全局变量或者来自模组的变量进行重定义或者赋值,让这些东西自顾自就行了。
不要一根筋式地维持风格一致性,这是思维力底下的妖怪喽啰做的事情。一致性是好事情,不过愚蠢地跟着别人遵从一些白痴口号是错误的行为——这本身就是一种坏的风格。好好为自己照想把。
永远永远都使用 class Name(object) 的方式定义 class,否则你会碰到大麻烦。
现在我要求你假装成是我,板起脸来,把你的代码打印出来,然后拿一支红笔,把代码中所有的错误都标出来。你要充分利用你在本章以及前面学到的知识。等你批改完了,我要求你把所有的错误改对。这个过程我需要你多重复几次,争取找到更多的可以改进的地方。使用我前面教过的方法,把代码分解成最细小的单元一一进行分析。
这节练习的目的是训练你对于细节的关注程度。等你检查完自己的代码,再找一段别人的代码用这种方法检查一遍。把代码打印出来,检查出所有代码和风格方面的错误,然后试着在不改坏别人代码的前提下把它们修改正确、
这周我要求你的事情就是批改和纠错,包含你自己的代码和别人的代码,再没有别的了。这节习题难度还是挺大,不过一旦你完成了任务,你学过的东西就会牢牢记在脑中。