2011-11-15 16 views
5
def buildTestCase(xmlfile, description, method, evalString): 
    func = lambda self, xmlfile=xmlfile, method=method, evalString=evalString: \ 
     method(self, evalString, feedparser.parse(xmlfile)) 
    func.__doc__ = description 
    return func 

Sopra è un frammento di codice da feedparser, perché c'è un "sé" in metodo definizione di funzione (auto, evalString, feedparser.parse (XMLFILE))?"sé" in python lambda espressione

Grazie.

risposta

7

self si riferisce semplicemente al primo argomento della lambda denominata self.

il nome self non è una parola chiave riservata, è solo una convenzione sopra Pythonisti a nome all'istanza dell'oggetto su cui si applica la funzione. qui, l'autore usa il nome self come primo argomento per il lambda, poiché questo argomento riceverà un'istanza di un oggetto su cui il lambda applicherà il metodo specificato nell'argomento denominato method.

3

I metodi possono essere chiamati tramite la loro classe passando un'istanza della classe come primo argomento. Poiché il primo argomento di un metodo normale è chiamato self per convenzione, viene mantenuto qui.

>>> class C(object): 
... def foo(self): 
...  print 42 
... 
>>> c = C() 
>>> C.foo(c) 
42 
+0

Grazie Ignacio, ma non intendo la funzione di membro della classe. –

+0

Quindi cosa. È così che si chiama. –

2

Quella lambda deve essere utilizzata in modo simile a un metodo di classe. self è l'istanza della classe, praticamente uguale a self in qualsiasi altro metodo.