2013-05-16 63 views
1

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

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)部分中定义并且不能共享 有什么建议吗? 非常感谢

回答

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) 
+0

*“的一些类是在一个线程环境中运行” *的' .insert()方法写在问题中不是线程安全的。 – jfs

0

如果你真的希望缓冲区被绑定到My1类,你可以使用一个静态类变量

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