अजगर नहीं संदेश आधारित OO प्रणाली है। इसके बजाए, जावास्क्रिप्ट के समान, गुण प्रथम श्रेणी के कार्यों के लिए हल किए जाते हैं और फिर बुलाए जाते हैं; खोज के रूप में, इस तरह के यांत्रिकी में व्यवहार थोड़ा अलग है।
अजगर में आवश्यकता है कि तरीकों कम से कम एक पैरामीटर, सामान्य रूप से self
कहा जाता है, जो अपने आप हो जाएगा जुड़े उदाहरण आपूर्ति जब यह एक विधि के रूप लागू किया जाता है।
इसके अलावा (और शायद प्रश्न के बिंदु पर), पाइथन def f..
या f = some_func()
का उपयोग करते समय उदाहरण सदस्य बाइंडिंग स्थापित करते समय अंतर नहीं करता है; तर्कसंगत रूप से यह कक्षाओं के बाहर व्यवहार से मेल खाता है।
उदाहरण में, फ़ंक्शन को आवंटित करने के लिए 'इसे एक उदाहरण विधि की तरह माना जाने की उम्मीद है'। यह सटीक वही है - पैरामीटर रहित - दोनों मामलों में फ़ंक्शन कहा जाता है; केवल भविष्य का उपयोग प्रासंगिक है।
अब जावास्क्रिप्ट के विपरीत, पाइथन बाध्य तरीकों की अवधारणा के माध्यम से विधियों और ऑब्जेक्ट एसोसिएशन को संभालता है - विधियों को हमेशा 'बाध्य' के रूप में हल किया जाता है।
a.f
का व्यवहार एक बाध्य विधि लौटने का कार्य - फ़ंक्शन जो पहले पैरामीटर को self
के रूप में स्वचालित रूप से बाध्य ऑब्जेक्ट की आपूर्ति करेगा - फ़ंक्शन के स्रोत से स्वतंत्र रूप से किया जाता है। इस मामले में इसका मतलब है कि पैरामीटर रहित फ़ंक्शन का उपयोग तब नहीं किया जा सकता जब यह 'बाध्य' होता है क्योंकि यह self
पैरामीटर स्वीकार नहीं करता है।
एक प्रदर्शन के रूप में, निम्नलिखित उसी तरह से असफल हो जायेगी क्योंकि स्रोत अंतर्निहित विधि करता नहीं एक तर्क के रूप उदाहरण को स्वीकार करने की न्यूनतम आवश्यकताओं को पूरा:
g = a.f
g()
इस मामले बुला g()
है func(a)
पर कॉल करने के बराबर।
तुलना के लिए, जावा, सी #, रूबी, और SmallTalk संदेश आधारित OO प्रणालियों रहे हैं - इन में एक वस्तु, एक 'नाम' से एक विधि को लागू करने की बजाय एक विधि को हल करने के बारे में बताया जाता है (या फ़ंक्शन) एक मान के रूप में जिसे बुलाया जा सकता है।