Python:在多个类之间共享类变量

时间:2013-05-16 12:18:29

标签: python multithreading class

我的问题是如何在多个类之间共享变量或缓冲区 例如从多个类写入单个缓冲区,知道某些类在线程环境中运行 示例

class my1(object):
    def __init__(self):
        self.buffer=[0]*5
        self.size=0
    def insert(self,data):
        self.data=data
        self.buffer[self.size]=self.data
        self.size+=1

class my2(my1):
    def __init__(self):
        self.insert('data1')

class my3(my1):
    def __init__(self):
        self.insert('data2')

所需的结果将是包含要处理的data1和data2的缓冲区 但是类my1中的缓冲区是在( init )部分中定义的,无法共享 有什么建议? 非常感谢

2 个答案:

答案 0 :(得分:0)

你做错了。

只需创建一个类my1的对象,并将其传递给类my2my3的对象。

# leave my1 as it is

class my2(): # no need to inherit from my1
    def __init__(self, my1obj): # buffer is object of my1
        my1obj.insert('data1')

class my3():
    def __init__(self, my1obj):
        my1obj.insert('data2')

mybuffer = my1()
my2obj = my2(mybuffer)
my3obj = my3(mybuffer)

答案 1 :(得分:0)

如果确实希望将缓冲区绑定到My1类,则可以使用静态类变量

class My1(object):
    buffer = [0] * 5