【问题标题】:Twisted framework need some clarifications扭曲的框架需要一些澄清
【发布时间】:2019-04-11 07:59:37
【问题描述】:

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

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 是如何更新的。

【问题讨论】:

    标签: python twisted factory


    【解决方案1】:

    在:

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

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

    由于它是同一个字典,当另一个更新时,没有什么会导致一个更新,因为“一个”和“另一个”实际上是同一个东西。

    【讨论】:

    • 谢谢让先生。很高兴我在一天之内得到了回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2020-07-25
    • 2013-08-06
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多