<p>在第二种情况下,您需要<code>import</code>(不确定“mainprogram.py”
在你的<code>$PYTHONPATH</code>上)</p>
<pre><code>#mainprogram.py
class mainprogram:
def runme(self):
execfile("my2ndscript.py")
def bleh(self):
print "bleh"
if __name__ == '__main__':
mainprogram().runme()
#my2ndscript.py
import mainprogram
x = mainprogram.mainprogram()
x.bleh()
</code></pre>
<p>但这将创建<code>mainprogram</code>的第二个实例。或者,更好的是:</p>
<pre><code>#mainprogram.py
class mainprogram:
def runme(self):
execfile("my2ndscript.py", globals={'this': self})
def bleh(self):
print "bleh"
if __name__ == '__main__':
mainprogram().runme()
#my2ndscript.py
this.bleh()
</code></pre>
<p>我想<code>execfile</code>无论如何都不是解决问题的正确方法。
为什么不使用<code>import</code>或<code>__import__</code>(以及<code>reload()</code>,以防在两次单击之间脚本发生更改)?</p>
<pre><code>#mainprogram.py
import my2ndscript
class mainprogram:
def runme(self):
reload(my2ndscript)
my2ndscript.main(self)
def bleh(self):
print "bleh"
if __name__ == '__main__':
mainprogram().runme()
#my2ndscript.py
def main(program):
program.bleh()
</code></pre>