raj*_*aju 6 python inheritance multithreading
我有一个代码示例,非常类似于以下
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()
Run Code Online (Sandbox Code Playgroud)
由于python的call-next-method,我无法运行FirstClass和thread的init方法.有没有其他方法可以解决这个问题.
您还需要调用初始化super(FirstClass, self).__init__()程序FirstClass.__init__()。
使用的全部目的super()是将调用传递给父合作社。在您的特定 MRO 中FirstClass列出之前,因此如果没有显式调用MRO 顺序中的threading.Thread下一个,则永远不会被调用。__init__threading.Thread.__init__()
您可能想看看Raymond Hettinger 在 PyCon 2015 上的精彩演讲,了解在这种情况下如何super()工作。