程序设计:
在任何给定时间只能有一个A实例化,以避免竞争条件,数据损坏等。
提供A到B-E副本的最佳方法是什么?当前F实例化A并在程序的生命周期中保留它,在创建它时将其传递给B-E。或者,我可以创建一个全局可用的模块,其中包含所有内容使用的A的共享副本。另一种方法是制作A的B-E子类,但这违反了只有一个A的约束(因为每个子类都是它们自己的数据处理程序,可以这么说)。
语言是Python 3,FWIW。
答案 0 :(得分:4)
使用Borg代替单身人士。
>>> class Borg( object ):
... __ss = {}
... def __init__( self ):
... self.__dict__ = self.__ss
...
>>> foo = Borg()
>>> foo.x = 1
>>> bar = Borg()
>>> bar.x
1
答案 1 :(得分:0)
如何使用模块技术,这要简单得多。
模块“A.py”中的
class A(object):
def __init__(self, ..)
...
a = A()
模块“B.py”中的
from A import a
class B(object):
def __init__(self)
global a
self.a = a
两者都有单个实例a。
对于其他类C,D,F等也可以这样做