2011-09-21 2 views
9

में सूची उदाहरण में एक विधि जोड़ें, मैं 'सूची' वर्ग के एक उदाहरण में एक विधि जोड़ना चाहता हूं। उदाहरण:पायथन

a = [1,2] 
a.first = lambda self: return self[0] 

मुझे पता है कि यह काम नहीं करता है, लेकिन मुझे ऐसा कुछ काम करना चाहिए। मुझे पता है कि यह एक अच्छा अभ्यास नहीं है, और मुझे पता है कि मुझे एक पूरी नई कक्षा करनी चाहिए, लेकिन मुझे लगता है कि यह पाइथन में संभव है और यह पता नहीं लगा है कि कैसे।

मैं के बारे में पता कर रहा हूँ: Dynamically add member function to an instance of a class in Python और Dynamically binding Python methods to an instance correctly binds the method names, but not the method

लेकिन एक देशी सूची के साथ उन लोगों से कोई कार्य नहीं।

धन्यवाद!

+1

नोट: lambdas के लिए 'वापसी' का उपयोग न करें। –

+1

आप 'ए.फर्स्ट = लैम्ब्डा: एक [0]' या 'ए.फर्स्ट = टाइप करना चाहते हैं। विधि टाइप (लैम्ब्डा स्वयं: स्वयं [0], ए) '। यदि आप किसी ऑब्जेक्ट में कोई फ़ंक्शन जोड़ते हैं जैसे कि पाइथन स्वचालित रूप से ऑब्जेक्ट पर बाध्य नहीं होगा। –

+0

देखें http://stackoverflow.com/questions/6738987/extension-method-for-python-built-in-types – OlivierBlanvillain

उत्तर

12

कुछ भी मूल सूची के साथ काम नहीं करेगा, क्योंकि आप सी में परिभाषित प्रकार के तरीकों को जोड़ नहीं सकते हैं। आपको list से प्राप्त करने की आवश्यकता होगी और उस विधि में अपनी विधि जोड़ें।

+0

ओह या, यह बहुत बढ़िया है ... धन्यवाद :) – rgenito