首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python全局对象缓存

python全局对象缓存
EN

Stack Overflow用户
提问于 2010-10-09 09:48:26
回答 2查看 3K关注 0票数 4

关于应用程序架构的小问题:

我有一个python脚本,作为守护进程运行。

里面有很多对象,都继承自一个类(让我们把它命名为'entity')

我还有一个主要对象,让它成为'topsys‘

实体由对(id,type (= class,粗略地))标识,它们以许多邪恶的方式连接在一起。它们也会一直被创建和删除,并且需要访问其他实体。

所以,我需要一种存储,基本上是字典的字典(每种类型一个),保存所有实体。

问题是,哪个更好:将这个字典作为对象属性附加到'topsys‘,还是作为类的属性附加到类实体?我会选择第二种(这样实体就不需要知道‘topsys’的存在),但是我不喜欢在类中直接使用属性。或者,也许还有其他方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-09 10:08:26

这里没有足够的细节来确定什么是最好的,但通常我会将实际的对象注册表作为模块级(全局)变量存储在顶级类中,并在基类中有一个方法来访问它。

代码语言:javascript
复制
_entities = []
class entity(object):
    @staticmethod
    def get_entity_registry(): 
         return _entities

或者,完全隐藏_entites并公开一些方法,例如。get_object_by_idregister_object,这样您以后可以更容易地更改_entities本身的存储。

顺便提一下,如果您还不了解weakrefs,那么在创建这样的对象注册表时,您可能会想要查看一下它。

票数 6
EN

Stack Overflow用户

发布于 2010-10-09 09:58:57

在类上使用属性是没有问题的。类也只是对象。

在你的例子中,有了这些有用的信息,我也会选择一个类属性,因为不创建依赖关系是很好的,有时以后会少一些担心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3895359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档