Python中类和线程的多重继承

时间:2015-11-25 10:48:25

标签: python class inheritance

我在Python中有一个关于类遗产的恼人问题。 代码如下:

import time
from threading import Thread

class Main:

def __init__(self):
        self.var = 0
        self.fils_on()

    def fils_on(self):
        self.temp = Fils()
        self.temp.start()

    def fils_off(self):
        self.temp.stop()
        del self.temp

class Fils(Thread, Main):

    def __init__(self):
        Main.__init__(self)
        Thread.__init__(self)
        self.encore = True

    def run(self):
        i = 0
        while self.encore:
            chaine = str(i)
            print chaine
            print "var: ", self.var
            i += 1
            time.sleep(1)

    def stop(self):
        self.encore = False

if __name__ == "__main__":
    main = Main()

我的问题是当我调用“Main”时,我无法从Fils类打印self.var变量。

有人知道为什么吗? 我该如何解决?

1 个答案:

答案 0 :(得分:1)

我不明白你想要实现什么,但似乎你正试图尝试线程,上面的实现超过了递归深度,因为你有一个循环依赖,来自Main类的__init__取决于{{ 1}}并构造self.fils_on(),触发Fils(),然后调用Fils.__init__(),然后整个过程继续。 在这里,我尝试修改你的代码,在其中我删除了Fils和Mains之间的继承,并在Fils中移动了var。

Main.__init__(self)