维护Python中对象之间的关系

时间:2010-06-28 05:04:47

标签: python oop

考虑以下假设的人员管理系统。假设每个Person对象属于多个Group个对象,每个Group包含许多Person个对象。我们可以通过向每个list和每个Person对象添加Group来表示它,但是当我们创建,删除或修改对象时,我们必须保持同步。在变化时,回调在这种情况下效果不佳,因为它们可能导致无限循环。

现在假设每个Group都有一个名称和描述。该名称存储在dict中,以便我们可以找到哪个组使用哪个名称和描述编入索引,以便我们可以搜索它。每当组发生变化时,都需要更新这些内容。

该应用程序有一个GUI,可以显示PersonGroup。每当对象的属性发生变化时,GUI都需要更新。

假设我们必须处理大量这样的效果。跟踪这个是相当混乱的。我可以想象这些使用属性,自定义集合甚至可能是元类。是否有任何设计模式/框架来处理这类系统?

2 个答案:

答案 0 :(得分:3)

大多数ORM处理此问题。只需使用内存中的SQLite表,让它付出艰苦的努力。

答案 1 :(得分:1)

这非常棘手。是的,人员和组数据可以映射到关系数据库中的表,但自动更新视图更具挑战性。

幸运的是Qt(以及PyQT)有一个MVC框架可以自动处理你想要的大部分内容。数据存储组件可以使用数据库表来存储Person和Group数据。您还可以在同一基础数据模型上创建多个视图,并将它们配置为在基础数据更改时自动更新。这使用称为信号的Qt功能,视图订阅模型的信号,以便他们了解变化。

本书Rapid GUI Programming with Python and QT提供了与此类案例非常类似的示例,请参阅第14章和第15章。还可能有其他GUI框架提供类似的MVC功能,其中的视图会在基础数据发生变化时自动通知