关于应用程序架构的小问题:
我有一个python脚本,作为守护进程运行。
里面有很多对象,都继承自一个类(让我们把它命名为'entity')
我还有一个主要对象,让它成为'topsys‘
实体由对(id,type (= class,粗略地))标识,它们以许多邪恶的方式连接在一起。它们也会一直被创建和删除,并且需要访问其他实体。
所以,我需要一种存储,基本上是字典的字典(每种类型一个),保存所有实体。
问题是,哪个更好:将这个字典作为对象属性附加到'topsys‘,还是作为类的属性附加到类实体?我会选择第二种(这样实体就不需要知道‘topsys’的存在),但是我不喜欢在类中直接使用属性。或者,也许还有其他方法?
发布于 2010-10-09 10:08:26
这里没有足够的细节来确定什么是最好的,但通常我会将实际的对象注册表作为模块级(全局)变量存储在顶级类中,并在基类中有一个方法来访问它。
_entities = []
class entity(object):
@staticmethod
def get_entity_registry():
return _entities或者,完全隐藏_entites并公开一些方法,例如。get_object_by_id、register_object,这样您以后可以更容易地更改_entities本身的存储。
顺便提一下,如果您还不了解weakrefs,那么在创建这样的对象注册表时,您可能会想要查看一下它。
发布于 2010-10-09 09:58:57
在类上使用属性是没有问题的。类也只是对象。
在你的例子中,有了这些有用的信息,我也会选择一个类属性,因为不创建依赖关系是很好的,有时以后会少一些担心。
https://stackoverflow.com/questions/3895359
复制相似问题