`lambda: class(class, class, ...)` 语法是什么意思?(扭曲的 Python 文档)

无尾礼服

我想使用 Twisted python 实现 Telnet 服务器。根据Twisted 文档,我在下面编写了代码并且它可以正常工作。但我有两个问题。

首先,我无法理解lambda这段代码中的语法究竟意味着什么,以及这三个类如何使用 lambda 相互关联。

其次,我需要使用self.transport.getPeer()来获取客户端IP地址。但是没有类似于类中的transport属性HistoricRecvLine(self.transportServerProtocol属性之一。) 我确实需要使用recvline才能管理终端,并且还需要使用transport属性。但我不知道如何使用它们。您有什么推荐的吗?

from twisted.application import internet
from twisted.conch import recvline
from twisted.conch.insults import insults
from twisted.conch.telnet import TelnetTransport, TelnetBootstrapProtocol
from twisted.internet import protocol

class DemoRecvLine(recvline.HistoricRecvLine):

    def lineReceived(self, line):
        print(line)
        if line.decode() == "quit":
            self.terminal.loseConnection()
        self.terminal.write(line)
        self.terminal.nextLine()
        self.terminal.write(self.ps[self.pn])
        #print(self.transport.getPeer().host)

f = protocol.ServerFactory()
f.protocol = lambda: TelnetTransport(TelnetBootstrapProtocol,insults.ServerProtocol, DemoRecvLine)

PORT = 6023
from twisted.internet import reactor
reactor.listenTCP(PORT, f)
reactor.run()
卡莱斯

我无法理解这段代码中 lambda 语法的确切含义

它定义了一个没有名字的函数。就像你写的

def noname():
    return TelnetTransport(TelnetBootstrapProtocol,insults.ServerProtocol, DemoRecvLine)

f.protocol = noname

即创建TelnetTransport具有一些参数对象的函数。

这三个类如何使用 lambda 相互关联

TelnetTransport对象将为这些类中的每一个创建一定数量的实例,大概不止一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章