जबकि सब कुछ पायथन में एक वस्तु है, यह नामों को हल करने और वस्तुओं के साथ बातचीत करने के दृष्टिकोण में रुबी से अलग है।
उदाहरण के लिए, रूबी आपको उस कार्यक्षमता का खुलासा करने के लिए ऑब्जेक्ट बेस क्लास पर 'to_s' विधि प्रदान करता है, पाइथन इसे स्ट्रिंग प्रकार में एकीकृत करता है - आप स्ट्रिंग का निर्माण करके एक प्रकार को स्ट्रिंग में कनवर्ट करते हैं इसमें से। 5.to_s
के बजाय, आपके पास str(5)
है।
हालांकि मूर्ख मत बनो। अभी भी पर्दे के पीछे एक विधि है - जिसके कारण इस कोड काम करता है:
(5).__str__()
तो व्यवहार में, दो मौलिक समान हैं, लेकिन आप उन्हें अलग तरह से इस्तेमाल करते हैं। पायथन में सूचियों और टुपल्स जैसे अनुक्रमों की लंबाई काम पर इस सिद्धांत का एक और उदाहरण है - वास्तविक विशेषता विशेष नामों के तरीकों पर बनाई गई है, लेकिन एक सरल, उपयोग में आसान इंटरफेस (len
फ़ंक्शन) के माध्यम से उजागर की गई है।
क्या आप अपने प्रश्न में लिखा है इस प्रकार किया जाएगा करने के लिए अजगर बराबर:
(5).__add__(6)
अन्य अंतर यह है कि महत्वपूर्ण है कि कैसे वैश्विक कार्यों लागू किया जाता है है। पायथन में, ग्लोबल्स को एक शब्दकोश (जैसे स्थानीय हैं) द्वारा दर्शाया जाता है। इसका मतलब है कि निम्नलिखित:
globals()["foo"].__call__(5)
इस गहरे लाल रंग का प्रभावी ढंग से करता है:
Object.foo(5)
यह दृष्टिकोण पर एक बड़ा प्रभाव का इस्तेमाल किया गया जब
foo(5)
अजगर में इस के बराबर है दोनों भाषाओं में कोड लिखना। रूबी लाइब्रेरी ऑब्जेक्ट्स जैसे मौजूदा प्रकारों के तरीकों के अतिरिक्त बढ़ने लगती हैं, जबकि पाइथन लाइब्रेरी किसी दिए गए मॉड्यूल पर वैश्विक कार्यों को जोड़ने के माध्यम से बढ़ती हैं।
स्रोत
2009-05-14 22:03:28
जब आप कहते हैं "ऑब्जेक्ट" क्या आपका मतलब ओओपी शब्दावली है? दोनों अजगर और रूबी बल्कि नौसिखिया भाषाएं हैं, इसलिए आप मुझसे अधिक समझदारी करते हैं यदि आप वास्तव में इसे किसी विशेष भाषा से अलग किए गए स्मॉलटाक, सी ++ या ओओपी-पैराडिग (सिद्धांत) से संबंधित पूछेंगे: "क्या पाइथन शुद्ध ओओ भाषा है, यानी प्रत्येक (डेटा) प्रकार एक वस्तु (या वस्तुओं की एक वर्ग) है? " http://en.wikipedia.org/wiki/Object-oriented_programming –