2012-11-15 26 views
13

पूर्णांक 2 एक __add__ विधि है:क्यों 2 .__ पायथन में __ (3) काम नहीं करता है?

>>> "__add__" in dir(2) 
True 

... लेकिन बुला यह एक सिंटैक्स त्रुटि को जन्म देती है:

>>> 2.__add__(3) 
    File "<stdin>", line 1 
    2.__add__(3) 
      ^
SyntaxError: invalid syntax 

मैं __add__ विधि का उपयोग क्यों नहीं कर सकते?

+1

के बीच एक रिक्ति इस विषय के प्रकार यहाँ अपेक्षाकृत आम सवाल कर रहे हैं डालने के लिए है। यह काफी दिलचस्प है, हालांकि मुझे वास्तव में कोई कारण नहीं दिख रहा है कि आप इसे '2 + 3' के बजाय क्यों करना चाहते हैं। – mgilson

+4

@mgilson: '(2) .__ add__' 'lambda x: x + 2' के बजाय" दो से दो "फ़ंक्शन के रूप में कार्य कर सकता है। – unutbu

+1

@unutbu - दिलचस्प। मुझे लगता है कि ऐसा करने के लिए एक चालाक (पढ़ने के लिए कम आसान?) होगा ... हालांकि यह एक अच्छा मुद्दा है। मुझे लगता है कि मैं भविष्य में इसके लिए तलाश में रहूंगा! – mgilson

उत्तर

19

2. को फ्लोट के रूप में पार्स किया गया है, इसलिए 2.__add__ एक सिंटेक्स त्रुटि है।

आप

(2).__add__(3) बजाय मूल्यांकन कर सकते हैं।


In [254]: (2).__add__(3) 
Out[254]: 5 
4

एक और तरीका है करने के लिए चारों ओर 2. एक नाव के रूप में पार्स किया जाता हो 2 और .

>>> 2 .__add__(3) 
5