gpt4 book ai didi

python - 有人可以向我解释一下 python 中的 Borg 设计模式吗?

转载 作者:行者123 更新时间:2023-12-01 02:03:22 26 4
gpt4 key购买 nike

我知道使用此模式是为了创建具有相同状态的多个实例,但我真的不明白它是如何工作的。

class Borg:
_shared_state = {}

def __init__(self):
self.__dict__ = self._shared_state



class Singleton(Borg):

def __init__(self, **kwargs):
Borg.__init__(self)
self._shared_state.update(kwargs)

def __str__(self):
return str(self._shared_state)

更具体地说,当我在 Singleton init 方法中调用 Borg.init 时会发生什么?

最佳答案

首先,类变量由所有实例共享。

class Spam:
ham = 'ham'

s1 = Spam()
s2 = Spam()

print(s1.ham) # => ham
print(s2.ham) # => ham

Spam.ham = 'egg'

print(s1.ham) # => egg
print(s2.ham) # => egg

其次,属性由self.__dict__管理。

class Spam:
pass

s1 = Spam()
s1.__dict__['ham'] = 'ham'
print(s1.ham) # => ham

Borg 模式使用此功能。 Borg.__shared_dict类变量。出现此行为的原因是,每当创建 Singleton 实例时,都会将 _shared_dict 分配给 self.__dict__

关于python - 有人可以向我解释一下 python 中的 Borg 设计模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49350380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com