LPTHW练习43 - 通过从字典返回构造函数来创建对象

时间:2017-06-18 15:21:22

标签: python dictionary constructor

学习Python的

Exercise 43 Hard Way使用一个值为构造函数的字典。字典在类中定义。 我不明白当这个类返回一个字典值时会发生什么。是每次都返回给定类的新对象吗?

class Map(object):

    scenes = {
        'central_corridor': CentralCorridor(),
        'laser_weapon_armory': LaserWeaponArmory(),
        'the_bridge': TheBridge(),
        'escape_pod': EscapePod(),
        'death': Death(),
        'finished': Finished(),
    }

...

这是从字典 scenes

返回值的方法
def next_scene(self, scene_name):
        val = Map.scenes.get(scene_name)
        return val

返回dict值是否每次返回时都会创建一个新对象? 当Python第一次看到类定义时,是否预先创建了字典中的对象?

练习是玩家可以在不同场景之间进行的游戏。因此,玩家可以多次进入一个场景。如果代码每次创建一个新对象,则会有与用户进入场景的次数一样多的对象。

1 个答案:

答案 0 :(得分:2)

在创建类Map时创建字典,并且在创建字典时将所有充当字典值的类对象实例化。

  

每次都返回给定类的新对象吗?

在类上只创建了一个dict对象。通过类在Map.scenes中访问dict时,不会创建新的。

  

返回dict值是否每次创建一个新对象   返回?

没有。始终返回创建dict时的初始类实例。