2010-01-22 231 views
0

有人可以给我一个关于下面的代码的解释吗?这段代码片断做了什么?

from twisted.internet import protocol, reactor 
from twisted.protocols import basic 

class FingerProtocol(basic.LineReceiver): 
    def lineReceived(self, user): 
     self.transport.write(self.factory.getUser(user)+"\r\n") 
     self.transport.loseConnection() 

class FingerFactory(protocol.ServerFactory): 
    protocol = FingerProtocol 

    def __init__(self, **kwargs): # whats is ** ?? 
     self.users = kwargs 

    def getUser(self, user): 
     return self.users.get(user, "No such user") 

reactor.listenTCP(1079, FingerFactory(moshez='Happy and well')) 
# explain call to fnger factory?? 
+1

从Python教程:http://docs.python.org/tutorial/controlflow.html#keyword-arguments。 – 2010-01-22 06:54:01

回答

0

对FingerFactory(一个奇怪的名字,BTW)的调用正在实例化一个FingerFactory对象。该调用的参数传递给类的__init__功能,在那里它们被**kwargs参数接受的字典:

{'moshez': 'Happy and well'} 

因此,这是分配给新FingerFactory实例的属性users

0

而另一个问题,关于FingerFactory调用。

这就是你如何在Python中实例化的。您不使用new关键字。你可以像调用函数一样调用这个类。这个类的构造函数是__init__