4

有關應用程序體系結構的小問題:python全局對象緩存

我有一個python腳本,作爲守護進程運行。

裏面我有很多的對象,都從一個類繼承(讓我們將其命名爲「實體」)

我也有一個主要對象,讓它成爲「topsys」

實體通過對鑑定( id,type(= class,粗略)),並且它們以許多惡意的方式相連。它們也一直創建和刪除,並且需要訪問其他實體。

所以,我需要一種存儲,基本上字典詞典(每種類型),持有的所有實體。

,問題是,什麼是更好的:連接這個字典「topsys」作爲一個對象的屬性或類實體,作爲類的屬性?我會選擇第二個(所以實體不需要知道'topsys'的存在),但是我對直接在類中使用屬​​性感覺不好。或者,也許有另一種方式?

回答

6

有沒有足夠的細節在這裏可以肯定的什麼是最好的,但一般我會存儲實際的對象註冊表作爲頂級模塊級(全局)變量,並在基類的方法訪問它。

_entities = [] 
class entity(object): 
    @staticmethod 
    def get_entity_registry(): 
     return _entities 

或者,完全隱藏_entites並暴露一些方法,例如。 get_object_by_id,register_object,所以你可以稍後更容易地更改_entities本身的存儲。順便提一下,如果你不在那裏,你可能會想要查看weakrefs這樣的對象註冊表。

+0

這正是我在做什麼,感謝確認:) - 和weakref的榮譽,這正是我所需要的 – 2010-10-10 21:34:57

0

使用類的屬性沒有問題。類也只是對象。

在你的情況,可用這個小信息,我會去一個類屬性,也因爲沒有創建依賴北京時間巨大,將是一個少擔心有時更高版本。