2011-11-15 22 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 

से ऊपर में, feedparser से एक कोड स्निपेट कारण है कि वहाँ एक "स्व" समारोह परिभाषा विधि में है (स्वयं, evalString, feedparser.parse (xmlfile))?"स्व" अजगर लैम्ब्डा अभिव्यक्ति

धन्यवाद।

उत्तर

7

self बस self नामक लैम्ब्डा के पहले तर्क को संदर्भित करता है।

नाम self नाम आरक्षित कीवर्ड नहीं है, यह केवल उस ऑब्जेक्ट के उदाहरण का नाम देने के लिए पाइथोनिस्टस से ऊपर एक सम्मेलन है जिस पर फ़ंक्शन लागू होता है। यहां, लेखक लैम्ब्डा के पहले तर्क के रूप में self नाम का उपयोग करता है, क्योंकि इस तर्क को उस ऑब्जेक्ट का एक उदाहरण प्राप्त होगा जिस पर लैम्ब्डा method नामक तर्क में निर्दिष्ट विधि लागू करेगा।

3

कक्षा के उदाहरण को पहले तर्क के रूप में पारित करके अपने वर्ग के माध्यम से विधियों को बुलाया जा सकता है। चूंकि एक सामान्य विधि के पहले तर्क को सम्मेलन द्वारा self कहा जाता है, इसलिए इसे यहां रखा जाता है।

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

धन्यवाद इग्नासिओ, लेकिन मेरा मतलब क्लास सदस्य फ़ंक्शन नहीं है। –

+0

तो क्या। इस तरह इसे कहा जाता है। –

2

वह लैम्ब्डा का उद्देश्य कक्षा विधि के समान ही किया जाना है। self कक्षा का उदाहरण है, जो किसी अन्य विधि में self जैसा ही है।

संबंधित मुद्दे