1

それで、最初にここに私のコードがあります:

import threading

print "Press Escape to Quit"

class threadOne(threading.Thread): #I don't understand this or the next line
    def run(self):
        setup()

    def setup():
        print 'hello world - this is threadOne'


class threadTwo(threading.Thread):
    def run(self):
        print 'ran'

threadOne().start()
threadTwo().start()

したがって、問題は、クラス'threadOne'内でrun関数が実行されますが(スレッドモジュールによって呼び出されるため)、そこから他の関数​​を呼び出すことができないということです。これには、setup()関数の下にさらに関数を作成する場合も含まれます。たとえば、上記のrun(self)関数で、setup()を呼び出して、「NameError:グローバル名」「setup」が定義されていません。

誰かアイデアがありますか、それとも私に説明してもらえますか?

サム

4

2 に答える 2

2

setupThreadインスタンスのメソッドです。したがって、ではself.setup()なくで呼び出しますsetup()setup後者は、存在しないという名前のグローバル関数を呼び出そうとしています。

はインスタンスメソッドであるため、最初のパラメータとしてもsetup()受け入れる必要があります。self

于 2013-01-23T17:54:03.520 に答える
2

私はあなたが次のことをするつもりだったと思います:

class threadOne(threading.Thread): #I don't understand this or the next line
    def run(self):
        self.setup()

    def setup(self):
        print 'hello world - this is threadOne'
于 2013-01-23T17:54:12.443 に答える