python - 传递类实例化(分层)

标签 python database oop python-3.x

程序设计:

  • A 类,实现较低级别的数据处理
    • 类 B-E,为 A 提供更高级别的接口(interface)以执行各种功能
      • F 类,它是根据用户输入与 B-E 交互的 UI 对象

在任何给定时间只能有一个 A 实例化,以避免竞争条件、数据损坏等。

向 B-E 提供 A 副本的最佳方式是什么?当前,F 实例化 A 并在程序的整个生命周期内保留它,并在创建它们时将其传递给 B-E。或者,我可以创建一个全局可用的模块,其中包含所有内容都使用的 A 的共享副本。另一种选择是创建 A 的 B-E 子类,但这违反了只有一个 A 的约束(因为每个子类都是它们自己的数据处理程序,可以这么说)。

语言是 Python 3,FWIW。

最佳答案

使用 Borg而不是单例。

>>> class Borg( object ):
...     __ss = {}
...     def __init__( self ):
...             self.__dict__ = self.__ss
...
>>> foo = Borg()
>>> foo.x = 1
>>> bar = Borg()
>>> bar.x
1

关于python - 传递类实例化(分层),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612535/

相关文章:

mysql - 如何让mysql自动插入数据

javascript - 如何在不单独列出它们的情况下为 javascript 中的所有事件添加事件监听器?

php - 通过php更新数据库中的数据

python - Pandas 选择带有空行的日期范围不起作用

python - 如何将 HuggingFace 的 Seq2seq 模型转换为 onnx 格式

python - AttributeError,声称一个明明存在的属性不存在。为什么我得到它? (子类问题)

mysql - 我想动态创建存储过程以逗号分隔的列和值

javascript - 使用默认值时调用静态方法

oop - OOP 是否基于任何数学分支?

python - 对于包的分支,什么是好的 pip/setuptools 兼容版本号?