扭曲的框架需要澄清

时间:2019-04-11 07:59:37

标签: python twisted factory

当我在有关“编写服务器”的扭曲框架教程中浏览代码时,我遇到了以下几行代码,这让我感到困惑。

class Chat(LineReceiver):
    def __init__(self,users):
        self.users = users

class ChatFactory(Factory):

    def __init__(self):
        self.users = {} # maps user names to Chat instances
    def buildProtocol(self, addr):
        return Chat(self.users)

任何人都请解释一下每当Chat类中的self.users更新时,如何更新ChatFactory类中的self.users。

1 个答案:

答案 0 :(得分:2)

在:

f = ChatFactory()
p = f.buildProtocol(some_address)

表达式f.usersp.users引用相同的字典。这是因为ChatFactory.buildProtocolself.users传递给Chat初始化程序,而Chat初始化程序保存了对其的引用。

因为它是同一本词典,所以没有什么可以使一个在更新另一个时得到更新,因为“一个”和“另一个”实际上是同一件事。