twisted中的factory和对应的protocol结合大概有2种方式:

1.在factory中定义:
  protocol = POP3ClientProtocol
   这种方式默认是在twisted的prtocol.py中的buildProtocol方法中来生成对应的protocol实例,代码如下:
  def buildProtocol(self, addr):
         p = self.protocol()
         p.factory = self
         return p
   这样,在protocol的init方法中是无法得到当前factory对象的,只能是在protocol的某个事件回调函数里去拿到factory
   经常,我们需要在factory和protocol之间传递一些参数,这种方式就比较麻烦,因为不确定在什么时间才能拿到那些参数的值。

2.在factory中重写buildProtocol方法:
  def buildProtocol(self, addr):
        pr = POP3ClientProtocol(self)
        self.p = pr
        return pr
   这样,在生成protocol实例时,就可以把当前的factory给传递过去,因此,在protocol的init方法中是能得到当前factory对象
   从而,也能在init时就顺利的拿到factory传递的一些参数了


第二种方式其实更灵活一下吧