簡體   English   中英

如何從Python中運行調用Thread派生類方法?

[英]How to call Thread derived class method from run in Python?

目前我不是一個python程序員,但我正在對一些python代碼進行一些維護,而且我或多或少有以下內容:

class DerivedThread(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)

  def initStuff():
    print "Hello 2"

  def run(self):
    print "Hello 1"
    self.initStuff()
    print "Hello 3"

initStuff並沒有調用print ,只是設置了一些變量,我已經為組織添加了這個方法,之前只有__init__run

問題是,一旦執行到達self.initStuff() ,我就看不到任何消息了,只有"Hello 1" ,我認為用python調用派生方法有些問題,但我不知道發生了什么。

發生了什么?

問題在於initStuff方法的定義。 它在定義中至少需要一個參數(通常稱為“self”)(你沒有定義參數)。 讓我們看看會發生什么:

class MyClass(object):

    def initStuff(self):
        pass

c = MyClass()
c.initStuff()

TypeError: initStuff() takes no arguments (1 given)

顯然,您的代碼在您定義的線程中無聲地失敗。

解決問題的方法是根據Python規則定義initStuff方法。

 ...
 def initStuff(self):  #  Here 'self' argument is defined
      pass

這種方法稱為instancemethod,因為它代表您的類實例調用(第一個參數是必須顯式定義的實例對象本身)。

閱讀有關文檔中的類的更多信息

哦,我明白了,我只需要將self作為參數傳遞給initStuff

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM