<p>线路:</p>
<pre><code>game = Game(agents, display, self, catchExceptions=catchExceptions)
</code></pre>
<p>在<code>ClassicGameRules.newGame</code>中,使用三个位置参数和一个关键字参数以及新<code>Game</code>实例的隐式第一个位置参数调用<code>Game.__init__</code>。<code>Game.__init__</code>定义为:</p>
<pre><code>def __init__(self, agents, display, rules, startingIndex=0, muteAgents=False, catchExceptions=False ):
# agents display self [default] [default] catchExceptions
</code></pre>
<p>关键的是,调用函数中的<code>self</code>与被调用函数中的<code>self</code>不同。此调用将<code>ClassicGameRules</code>实例作为参数<code>rules</code>传递给<code>Game</code>实例。这将创建一个双向链接:</p>
<ul>
<li>您可以通过<code>self.game</code>访问<code>ClassicGameRules</code>实例方法中的<code>Game</code>实例;以及</li>
<li>您可以通过<code>self.rules</code>访问<code>Game</code>实例方法中的<code>ClassicGameRules</code>实例。你知道吗</li>
</ul>
<p>下一部分:</p>
<pre><code>game.state = initState
self.initialState = initState.deepCopy()
</code></pre>
<p>将<code>Game</code>实例的<code>state</code>属性设置为<code>initState</code>,然后将该状态的<em>副本</em>保存为<code>self.initialState</code>(其中<code>self</code>指代<code>ClassicGameRules</code>实例,因为我们在<code>ClassicGameRules</code>实例方法中)。你知道吗</p>