首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`lambda: class(class,class,.)”语法是什么意思?(扭曲的Python文档)

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

Stack Overflow用户
提问于 2019-09-02 08:27:09
回答 1查看 72关注 0票数 0

我想使用Twisted python实现Telnet服务器。根据扭曲的文件的说法,我在下面编写了代码,它工作正常。但我有两个问题。

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

其次,我需要使用self.transport.getPeer()来获取客户端ip地址。但是,在transport类中没有类似于HistoricRecvLine属性的东西。(self.transportServerProtocol属性之一。)我确实需要使用recvline来管理终端,也需要使用transport属性。但我不知道怎么把它们都用上。你有什么建议吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-02 08:44:01

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

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

代码语言:javascript
复制
def noname():
    return TelnetTransport(TelnetBootstrapProtocol,insults.ServerProtocol, DemoRecvLine)

f.protocol = noname

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57753655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档