通过艰苦的方式学习python。语法

通过艰苦的方式学习python。语法,python,class,oop,dictionary,syntax,Python,Class,Oop,Dictionary,Syntax,本练习中关于语法的快速问题;我试着搜索它,以为它会是一个流行的问题,但什么都没有!所以我可能只是感到困惑。无论如何,看看下面的代码摘录: class Engine(object): def __init__(self, scene_map): self.scene_map = scene_map def play(self): current_scene = self.scene_map.opening_scene() last

本练习中关于语法的快速问题;我试着搜索它,以为它会是一个流行的问题,但什么都没有!所以我可能只是感到困惑。无论如何,看看下面的代码摘录:

class Engine(object):

    def __init__(self, scene_map):
        self.scene_map = scene_map

    def play(self):
        current_scene = self.scene_map.opening_scene()
        last_scene = self.scene_map.next_scene('finished')

        while current_scene != last_scene:
            next_scene_name = current_scene.enter()
            current_scene = self.scene_map.next_scene(next_scene_name)

        # be sure to print out the last scene
        current_scene.enter()




class Map(object):

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

    def __init__(self, start_scene):
        self.start_scene = start_scene

    def next_scene(self, scene_name):
        val = Map.scenes.get(scene_name)
        return val

    def opening_scene(self):
        return self.next_scene(self.start_scene)


a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()
play()
是否会产生一个语法,该语法将声明:

current\u scene=CentralCorridor().enter()

我的意思是代码可以工作,但我相信为了让代码工作,语法应该是

current\u scene=CentralCorridor.enter()

当涉及到作为函数的键/值时,我是否忽略了一些东西


提前谢谢各位

查看
CentralCorridor
中输入
的定义。如果
enter
有第一个参数(按惯例称为self,但实际上可以命名为任何名称),则需要传入一个参数

在Python中,当类的实例调用该类的方法时,它会隐式地将引用作为第一个位置参数传递给自身

因此,使用类似于
CentralCorridor.enter()
的调用,您将传入0个参数,并将得到一个
TypeError
,表示缺少一个必需的位置参数。使用类似于
CentralCorridor().enter()
的调用,将创建的新实例作为第一个参数隐式传递给方法
enter
。这只是一种简写方式:


CentralCorridor.enter(CentralCorridor())

啊,好的,有道理!谢谢你的快速回复!