2013-05-16 85 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