虽然我正在编写关于“编写服务器”的扭曲框架教程中的代码,但我通过以下代码行来找到了我的困惑。
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如何得到更新。
在:
f = ChatFactory()
p = f.buildProtocol(some_address)
表达式f.users
和p.users
指的是同一个字典。这是因为ChatFactory.buildProtocol
将self.users
传递给Chat
初始化器,而Chat
初始化器保存了对它的引用。
因为它是相同的字典,所以没有什么能够导致在更新另一个时更新,因为“一个”和“另一个”实际上是同一个东西。