2010-01-22 7 views
0

quelqu'un peut-il me donner une explication sur le code suivant?que fait cet extrait de code?

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

À partir du didacticiel Python: http://docs.python.org/tutorial/controlflow.html#keyword-arguments. –

Répondre

0

L'appel à FingerFactory (un nom étrange, BTW) instancie un objet FingerFactory. Les paramètres à cet appel sont transmis à la fonction __init__ de la classe, où ils sont acceptés par le paramètre **kwargs comme un dictionnaire:

{'moshez': 'Happy and well'} 

Ainsi est assignée à l'attribut users de la nouvelle instance FingerFactory.

0

Et l'autre question, concernant FingerFactory appel.

C'est comme ça que vous faites l'instanciation en Python. Vous n'utilisez pas de mot-clé new. Vous appelez simplement la classe comme si c'était une fonction. Le constructeur de la classe est __init__