![](/img/trans.png)
[英]How do I call a base class method from within the same overloaded derived class method in python?
[英]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.