"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में इंस्टेंस बनाम क्लास मेथड्स: आपको \"सेल्फ\" और \"cls\" का उपयोग कब करना चाहिए?

पायथन में इंस्टेंस बनाम क्लास मेथड्स: आपको \"सेल्फ\" और \"cls\" का उपयोग कब करना चाहिए?

2024-11-08 को प्रकाशित
ब्राउज़ करें:948

  Instance vs. Class Methods in Python: When Should You Use \

क्लास और इंस्टेंस विधियों की बारीकियों में गोता लगाना: स्वयं बनाम सीएलएस से परे

पायथन एन्हांसमेंट प्रस्ताव (पीईपी) 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.परिचय() # आउटपुट: नमस्ते, मैं

पहले पैरामीटर के रूप में "cls" का उपयोग करके, "परिचय" विधि को सीधे उपवर्ग पर बुलाया जा सकता है, जिससे यह अपने स्वयं के व्यवहार को परिभाषित करने की अनुमति देता है अभी भी मूल वर्ग से विरासत में मिली संपत्तियों तक पहुंच है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3