2015-07-13 98 views
-1

我使用嵌套類構造我的數據和數據的特定功能(不能得到正確的縮進的代碼片段,不好意思):嵌套類的替代?

class test: 
    class AA: 
     def __init__(self): 
      self.name = "ZZ-top" 
      self.flag = False 
     def reset(self): 
      self.name = "AArdvark" 
      self.flag = True 
    class BB: 
     def __init__(self): 
      self.num = 11 
     def checker(self): 
      if self.num > 10: 
       test.AA.name = "Toasty"      
    def __init__(self): 
     self.AA = self.AA() 
     self.BB = self.BB() 

對我來說這是最整潔,最簡​​單的方法來隔離我數據按班。我經常收到來自不同來源的相同數據,並希望具有這些數據。例如。 data.image.latitude和data.csv.latitude。我也想有從多個類獲取或設置數據的函數。例如:檢查器功能。

問題是python似乎不喜歡嵌套類。我遇到了醃菜問題(不能pickle class'test.BB.num',這似乎是一個普遍的pickle/nested類問題),並且一些需要相鄰類信息的函數不起作用。我想我必須放棄嵌套類。

什麼是構建這些數據的Python正確的方式?我是否應該只有一個可怕的大類(self.AA_timeofday ... self.ZZ_timeofday)以及其中的所有功能,還是有更好的?

回答

0

有很少需要嵌套類,包裝比另一個命名空間中的類的名稱,並打破酸洗在功能方面沒有區別等。

只要把課程在你模塊的全球一級:

class AA: 
    def __init__(self): 
     self.name = "ZZ-top" 
     self.flag = False 
    def reset(self): 
     self.name = "AArdvark" 
     self.flag = True 

class BB: 
    def __init__(self): 
     self.num = 11 
    def checker(self): 
     if self.num > 10: 
      test.AA.name = "Toasty" 

class test:     
    def __init__(self): 
     self.AA = AA() 
     self.BB = BB() 
+0

是啊,這做到了。簡單的解決方案,我不相信我錯過了。 – RedM