python3中的观察者Singleton

2024-04-27 12:05:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在python3应用程序中创建一个观察者,以便在模块间共享,所以我尝试将Observer和Singleton模式结合起来。使用“使用Python的软件体系结构”和其他地方中指定的Borg方法,我得出了以下结论:

class Borg(object):
__shared_state = {}
def __init__(self):
    self.__dict__ = self.__shared_state

class Publisher(Borg):
    def __init__(self):
        Borg.__init__(self)
        self.subscribers = {}

现在我可以在Publisher上使用“subscribe”函数来添加订阅服务器。任何新订户都将添加到自我订阅者代码运行良好。在

问题是self.subscribers = {}行。如果有一个位的订阅服务器使用一个当前的状态开始,那么如果一个用户使用一个当前的状态开始一个当前的线路,那么这个线路将被删除。如果我使用离散值,比如p.x = 5(其中p = Publisher()),那么这就不是问题了。在

关于如何在多个发布服务器实例化中保留订阅服务器列表,有什么建议吗?我确实把订户加入了博格本身,这似乎很管用,但我想知道是否存在一种更像Python的方式。如果我所做的只是保持博格语中的共享状态,我就可以完全摆脱这个“uuu dict_uuu”了。在


Tags: self服务器init状态defborgdict线路