簡體   English   中英

多重繼承以及python中的線程

[英]Multiple inheritance along with threading in python

我有一個代碼示例,非常類似於以下

import threading
import datetime
import time
import sys

class FirstClass(object):
    def __init__(self):
        print 'initialized'

class ThreadClass(FirstClass, threading.Thread):
    def __init__(self):
        super(ThreadClass, self).__init__()
        print 'initialized2'

    def run(self):
        time.sleep(1)
        now = datetime.datetime.now()
        sys.stdout.write("%s says Hello World at time: %s \n" % (self.getName(), now))

for i in range(20):
    t = ThreadClass()
    t.start()

由於python的call-next-method,我無法運行FirstClass和thread的init方法。 有沒有其他方法可以解決這個問題。

你需要在FirstClass.__init__()初始化程序中調用super(FirstClass, self).__init__()

使用super()是將調用傳遞給父協作。 在你的特定MRO中,在threading.Thread之前列出了FirstClass ,所以沒有在MRO命令中明確調用下一個__init__threading.Thread.__init__()永遠不會被調用。

您可能想看一下Raymond Hettinger關於super()在這種情況下如何工作的優秀PyCon 2015演示文稿

暫無
暫無

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

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