我开始学习/编写 Twisted 网络编程,我遇到了以下代码:
def handle_REGISTER(self, name):
if name in self.factory.users:
self.sendLine("Name taken, please choose another.")
return
self.sendLine("Welcome, %s!" % (name,))
self.broadcastMessage("%s has joined the channel." % (name,))
self.name = name
self.factory.users[name] = self
self.state = "CHAT"
def handle_CHAT(self, message):
message = "<%s> %s" % (self.name, message)
self.broadcastMessage(message)
def broadcastMessage(self, message):
for name, protocol in self.factory.users.iteritems():
if protocol != self:
protocol.sendLine(message)
self.x[y]=self
有什么好处?
最佳答案
self.factory.users
是一个共享映射;该类的每个实例都可以访问它。如果您愿意的话,它是连接实例的中央注册表。连接本身负责注册自身。
通过在 self.factory.users
中存储对所有每用户实例的引用然后,您可以向 broadcastMessage
中的所有用户发送消息。方法:
for name, protocol in self.factory.users.iteritems():
if protocol != self:
protocol.sendLine(message)
这会循环所有已注册的实例,并调用 sendLine()
在每个其他连接上。
关于python - 为什么在 "variable"中使用 self (引用?)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040812/