【发布时间】:2014-12-13 06:40:19
【问题描述】:
我需要一些帮助才能得到一些东西。我是 OOP 的新手。从我在 Twisted 的文档中看到的,更准确地说是 Protocol 类:http://twistedmatrix.com/documents/current/api/twisted.internet.protocol.Protocol.html 我知道这个类就像定义了 3 个方法的接口,我应该覆盖这些方法并将代码放入其中,如以下经典示例所示:
from twisted.internet.protocol import Protocol
class Echo(Protocol):
def dataReceived(self, data):
self.transport.write(data)
但是我没有得到也找不到的是,当 Protocol 类不包含实际代码,只是方法的定义时,这段代码是如何成功运行的。协议如何同时成为类和接口(它被创建为类但只包含方法的定义)?运行并响应事件以便调用定义的方法的实际代码在哪里?
【问题讨论】:
-
Twisted 的主要范式:
don't call us, we'll call you。所以是的,抽象协议类不应该包含任何实际代码,只包含定义。你所说的“代码的主要部分”是Twisted.Reactor。但在真正需要之前,您不应该打扰自己,只需开始编写网络服务的实际部分,其余部分留给框架。 -
“运行成功”是什么意思?这个程序在运行时什么也不做。 “没有实际代码”是什么意思?有一行“实际”代码(我认为你的意思是“方法的实现”:
self.transport.write(data)。“它被创建为类”是什么意思?为了让这个问题得到有用的回答,它必须缩小很多,并包括(例如)您为解决此问题而采取的步骤以及为什么它们不适合您。