Twisted 框架需要一些说明

Twisted framework need some clarifications

当我浏览有关 'writing servers' 的扭曲框架教程中的代码时,我遇到了以下让我感到困惑的代码行。

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)

任何人请解释 ChatFactory class 中的 self.users 如何在 Chat class 中的 self.users 更新时更新。

在:

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

表达式f.usersp.users指的是同一个字典。这是因为 ChatFactory.buildProtocolself.users 传递给 Chat 初始化器并且 Chat 初始化器保存了对它的引用。

因为是同一个字典,所以没有什么会导致一个更新而另一个更新,因为 "one" 和 "the other" 实际上是同一个东西。