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

What does `lambda: class(class, class, ...)` syntax mean? (Twisted Python document)

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

首先,我无法理解 lambda 语法在这段代码中的确切含义以及这三个 class 是如何使用 lambda 相互关联的。

其次,我需要使用self.transport.getPeer()来获取客户端的IP地址。但是 HistoricRecvLine class 中没有类似于 transport 属性的内容。 (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()

I can not understand what lambda syntax exactly mean in this code

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

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

f.protocol = noname

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

how those three classes are related to each other using lambda

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