笨办法学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()

我直接把注释写在了后面方便看,这样写是错误的

 

 

 
 posted on 2016-10-11 21:36  Eiffel最爱八块腹肌  阅读(825)  评论(0编辑  收藏  举报