擅长:python、mysql、java
<p>出现此错误是因为<code>location_dict</code>是类变量。在定义<code>location_dict</code>时,您试图将<code>MainCorridor</code>对象分配给<code>location_dict</code>,但这是在定义<code>MainCorridor</code>之前发生的,因此您会收到错误,因为它还不存在。如果在实例而不是类上定义<code>location_dict</code>,则不会得到这个结果(见下文)。你知道吗</p>
<pre><code>class Engine(object):
def goto(self, location):
return Engine.location_dict.get(location).start()
def test(self):
print "Calling Engine() from MainCorridor()"
def __init__(self):
self.location_dict = {'main_corridor': MainCorridor(),}
class MainCorridor(object):
def __init__(self):
self.engine = Engine()
def start(self):
self.engine.test()
</code></pre>
<p>另一方面,由于在对象之间来回切换,当我运行带有这些修改的代码时,我得到了一个<code>RuntimeError: maximum recursion depth exceeded</code>。当您创建<code>Engine</code>的实例时,就会发生这种情况。请注意,当您创建<code>Engine</code>时,它会创建一个<code>MainCorridor</code>并将其放入dict。但是当您创建<code>MainCorridor</code>时,它会创建一个<code>Engine</code>,它会创建一个<code>MainCorridor</code>并将其放入dict。但是当您创建<code>MainCorridor</code>时。。。你知道吗</p>