笨办法学python第42节,这节讲的是类,程序沿用上一节中一个游戏,不同的是这一节用了类的方法。
其中改动的代码主要如下
原来的最后几句用了这样的代码:
ROOMS = { 'death':death, 'central_corridor':central_corridor, 'laser_weapon_armory':laser_weapon_armory, 'the_bridge':the_bridge, 'escape_pod':escape_pod } def runner(map,start): next = start while True: room = map[next] print "\n---------" next = room() runner(ROOMS, 'central_corridor')
运行时从这一句 runner(ROOMS, 'central_corridor')开始,主要的函数是def runner()
现在的代码将这一段主要的函数放在了类里面。
class Game(object): def __init__(self, start): //首先调用了是这个构造函数。 self.quips = [ "You died. You kinda suck at this.", "Nice job, you died...jackass.", "Suck a luser.", "I have a small puppy that's better at this." ] self.start = start //这一句就是说把"central_corridor"赋给self.start def play(self): next = self.start //这一句就是说把self.start赋给next,这时next就是"central_corridor" while True: print "\n--------" room = getattr(self,next) //getatr是python的一个方法,左边参数是某个类,右边参数是这个类里面的方法或者值,返回的是右边的 next = room() def death(self): print self.quips[randint(0,len(self.quips)-1)] exit(1)
代码的最后:
a_game = Game("central_corridor") //Game("central_corridor")是构造函数,调用第7行,初始化 a_game.play()
我直接把注释写在了后面方便看,这样写是错误的