क्लास और इंस्टेंस विधियों की बारीकियों में गोता लगाना: स्वयं बनाम सीएलएस से परे
पायथन एन्हांसमेंट प्रस्ताव (पीईपी) 8 उपयोग का सुझाव देता है उदाहरण विधियों में पहले तर्क के रूप में "स्वयं" और वर्ग विधियों में पहले तर्क के रूप में "सीएलएस"। यह अंतर उन विभिन्न भूमिकाओं से उत्पन्न होता है जो ये विधियां उदाहरणों और वर्गों के साथ काम करने में निभाती हैं। कक्षा। वे आम तौर पर उस विशेष उदाहरण की विशिष्ट विशेषताओं और व्यवहार के साथ बातचीत करते हैं। इन विधियों का पहला पैरामीटर स्वयं है, जो उस उदाहरण का प्रतिनिधित्व करता है जिस पर विधि को बुलाया जा रहा है।
उदाहरण के लिए, निम्न वर्ग एक "परिचय" उदाहरण विधि को परिभाषित करता है:
कक्षा उदाहरण: def __init__(स्वयं, नाम): स्व.नाम = नाम डीईएफ़ परिचय (स्वयं): प्रिंट करें ("हैलो, मैं %s हूं, और मेरा नाम %s है" % (स्वयं, स्व.नाम))जब हम इंस्ट क्लास का एक उदाहरण बनाते हैं और इसकी "परिचय" विधि को कॉल करते हैं, उदाहरण को स्वयं पैरामीटर के रूप में पारित किया जाता है, जिससे हमें इसकी विशेषताओं (इस मामले में, "नाम" विशेषता) तक पहुंचने की इजाजत मिलती है।class Inst:
def __init__(self, name):
self.name = name
def introduce(self):
print("Hello, I am %s, and my name is %s" % (self, self.name))
क्लास विधियां, व्यक्तिगत उदाहरणों के बजाय क्लास पर ही काम करती हैं। वे हमें वर्ग संरचना या व्यवहार को संशोधित या निरीक्षण करने की अनुमति देते हैं। इन विधियों का पहला पैरामीटर सीएलएस है, जो उस वर्ग का प्रतिनिधित्व करता है जिस पर विधि को बुलाया जा रहा है।
निम्न उदाहरण एक वर्ग विधि को दर्शाता है:
वर्ग सीएलएस: @classmethod डीईएफ़ परिचय (सीएलएस): प्रिंट करें ("हैलो, मैं %s हूं!" % cls)इस विधि को किसी इंस्टेंस की आवश्यकता नहीं है क्योंकि यह विशिष्ट ऑब्जेक्ट विशेषताओं के साथ इंटरैक्ट नहीं करता है। इसके बजाय, यह क्लास पर ही काम करता है, इसकी संरचना के बारे में जानकारी प्रदान करता है।पैरेंट क्लास से विरासत में मिलने पर क्लास के तरीके विशेष रूप से उपयोगी होते हैं, क्योंकि वे चाइल्ड क्लास को पेरेंट क्लास के व्यवहार को संशोधित या विस्तारित करने की अनुमति देते हैं। उदाहरण के लिए, निम्नलिखित उपवर्ग सीएलएस वर्ग की "परिचय" विधि को ओवरराइड करता है:class Cls:
@classmethod
def introduce(cls):
print("Hello, I am %s!" % cls)
वर्ग सबक्ल्स(सीएल):
उत्तीर्ण
SubCls.परिचय()
# आउटपुट: नमस्ते, मैं अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3