self
पायथन में शब्द का उद्देश्य क्या है ? मैं समझता हूं कि यह उस वर्ग से बनाई गई विशिष्ट वस्तु को संदर्भित करता है, लेकिन मैं यह नहीं देख सकता कि इसे पैरामीटर के रूप में प्रत्येक फ़ंक्शन में स्पष्ट रूप से जोड़ने की आवश्यकता क्यों है। उदाहरण के लिए, रूबी में मैं यह कर सकता हूं:
class myClass
def myFunc(name)
@name = name
end
end
जो मैं समझता हूं, काफी आसानी से। हालांकि अजगर में मुझे शामिल करने की आवश्यकता है self
:
class myClass:
def myFunc(self, name):
self.name = name
क्या कोई इसके माध्यम से मुझसे बात कर सकता है? यह ऐसा कुछ नहीं है जिसे मैंने अपने (प्रवेशित सीमित) अनुभव में पार किया है।
@name
अधिक सहज क्या है self.name
? बाद वाला, IMO, अधिक सहज है।
@foo
और self.foo
समान रूप से स्पष्ट हैं क्योंकि कोई अंतर्निहित संकल्प होने की आवश्यकता नहीं है (उदाहरण के लिए C ++ में, उदाहरण के सदस्यों को "स्पष्ट रूप से" बिना नाम के उपयोग के "स्पष्ट रूप से" एक्सेस किया जा सकता है)। अंतर केवल इतना है कि रूबी एक नए शब्दार्थ (@) का परिचय देती है, जबकि पायथन नहीं करता है। एक नया शब्दार्थ वर्बोसिटी की मात्रा के लायक था जो पूरी तरह से व्यक्तिपरक है। हालांकि, यह ध्यान दिया जाना चाहिए कि अधिकांश आधुनिक भाषाएं यहां एक अवधारणा पेश करना पसंद करती हैं (जैसे कि php $ यह, JS का यह)।