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

पायथन साक्षात्कार की तैयारी: क्लास विधियां बनाम स्टेटिक विधियां समझाई गईं

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

Python Interview Preparation: Class Methods vs Static Methods Explained

पायथन में, एक वर्ग के भीतर के तरीकों को इंस्टेंस तरीकों, क्लास तरीकों और स्थिर तरीकों में वर्गीकृत किया जा सकता है। प्रत्येक एक अद्वितीय उद्देश्य को पूरा करता है और कक्षा और उसके उदाहरणों तक विभिन्न स्तरों तक पहुंच प्रदान करता है। इस ब्लॉग में, हम कक्षा विधियों और स्थैतिक विधियों, उनका उपयोग कैसे करें, और आपके सामने आने वाले सामान्य साक्षात्कार प्रश्नों का पता लगाएंगे।

उदाहरण विधियाँ

वर्ग विधियों और स्थैतिक विधियों में गोता लगाने से पहले, आइए संक्षेप में उदाहरण विधियों का पुनर्कथन करें:

  • इंस्टेंस मेथड्स: ये क्लास में सबसे आम तरीके हैं और ऑब्जेक्ट की स्थिति तक पहुंचने या संशोधित करने के लिए उपयोग किए जाते हैं। वे स्वयं को पहले पैरामीटर के रूप में लेते हैं, जो वर्ग के उदाहरण का प्रतिनिधित्व करता है।
class Car:
    def __init__(self, model, year):
        self.model = model
        self.year = year

    def display_info(self):
        print(f"Car Model: {self.model}, Year: {self.year}")

# Usage
my_car = Car("Toyota", 2020)
my_car.display_info()  # Output: Car Model: Toyota, Year: 2020

कक्षा के तरीके

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

कक्षा पद्धतियों का उपयोग क्यों करें?

  • वैकल्पिक कंस्ट्रक्टर बनाने के लिए।

  • कक्षा-स्तरीय विशेषताओं तक पहुंचने या संशोधित करने के लिए।

उदाहरण: वैकल्पिक कंस्ट्रक्टर

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def from_birth_year(cls, name, birth_year):
        current_year = 2024
        age = current_year - birth_year
        return cls(name, age)

# Usage
person1 = Person("Alice", 30)  # Using the primary constructor
person2 = Person.from_birth_year("Bob", 1990)  # Using the alternative constructor

print(person1.name, person1.age)  # Output: Alice 30
print(person2.name, person2.age)  # Output: Bob 34

इस उदाहरण में, from_birth_year एक वैकल्पिक कंस्ट्रक्टर है जो जन्म वर्ष से आयु की गणना करता है और एक व्यक्ति उदाहरण बनाता है।

उदाहरण: कक्षा विशेषताओं को संशोधित करना

class Employee:
    company_name = "TechCorp"

    def __init__(self, name):
        self.name = name

    @classmethod
    def change_company(cls, new_name):
        cls.company_name = new_name

# Usage
Employee.change_company("NewTechCorp")
print(Employee.company_name)  # Output: NewTechCorp

इस उदाहरण में, Change_company एक क्लास विधि है जो क्लास विशेषता कंपनी_नाम को बदल देती है।

स्थैतिक तरीके

स्टेटिक विधियां वर्ग या उदाहरण-विशिष्ट डेटा तक पहुंच या संशोधन नहीं करती हैं। वे उपयोगिता विधियाँ हैं जो वर्ग से संबंधित हैं और @staticmethod डेकोरेटर का उपयोग करके परिभाषित की गई हैं।

स्थैतिक विधियों का उपयोग क्यों करें?

  • उपयोगिता कार्यों को परिभाषित करने के लिए जो वर्ग और उदाहरण डेटा से स्वतंत्र रूप से संचालित होते हैं।

  • क्लास नेमस्पेस के भीतर कोड को व्यवस्थित रखने के लिए।

उदाहरण: उपयोगिता फ़ंक्शन

class MathUtils:
    @staticmethod
    def add(a, b):
        return a   b

# Usage
print(MathUtils.add(5, 7))  # Output: 12

इस उदाहरण में, ऐड एक स्थिर विधि है जो किसी भी वर्ग या इंस्टेंस डेटा से स्वतंत्र रूप से जोड़ कार्य करता है।

तरीकों की तुलना

  • इंस्टेंस मेथड्स: क्लास (स्वयं) के एक इंस्टेंस पर काम करें।

  • क्लास तरीके: क्लास पर ही काम करें (सीएलएस)।

  • स्टेटिक तरीके: क्लास या इंस्टेंस-विशिष्ट डेटा पर काम न करें।

कक्षा पद्धतियों और स्थैतिक पद्धतियों पर साक्षात्कार प्रश्न

प्रश्न 1: वर्ग विधियों और स्थैतिक विधियों के बीच अंतर स्पष्ट करें।

  • क्लास तरीके: पहले पैरामीटर के रूप में सीएलएस का उपयोग करके क्लास पर ही काम करें। वे कक्षा-स्तरीय डेटा को संशोधित कर सकते हैं।

  • स्टेटिक तरीके: वर्ग और उदाहरण-विशिष्ट डेटा से स्वतंत्र हैं। वे सीएलएस या सेल्फ को पहले पैरामीटर के रूप में नहीं लेते हैं।

प्रश्न 2: कक्षा विधियों और स्थैतिक विधियों के साथ एक क्लास बुक लागू करें।

class Book:
    def __init__(self, title, author, publication_year):
        self.title = title
        self.author = author
        self.publication_year = publication_year

    @classmethod
    def from_string(cls, book_str):
        title, author, publication_year = book_str.split(', ')
        return cls(title, author, int(publication_year))

    @staticmethod
    def is_valid_year(year):
        return year > 0

# Usage
book1 = Book("Python Basics", "John Doe", 2020)
book2 = Book.from_string("Advanced Python, Jane Smith, 2018")

print(book1.title, book1.author, book1.publication_year)  # Output: Python Basics John Doe 2020
print(book2.title, book2.author, book2.publication_year)  # Output: Advanced Python Jane Smith 2018
print(Book.is_valid_year(2024))  # Output: True

इस उदाहरण में, from_string एक वैकल्पिक कंस्ट्रक्टर (क्लास विधि) है जो एक स्ट्रिंग से एक बुक ऑब्जेक्ट बनाता है, और is_valid_year एक स्थिर विधि है जो जांच करती है कि कोई वर्ष वैध है या नहीं।

प्रश्न 3: आप वैकल्पिक कंस्ट्रक्टर के रूप में क्लास पद्धति का उपयोग क्यों करेंगे?

वैकल्पिक कंस्ट्रक्टर के रूप में क्लास विधियां विभिन्न प्रकार के इनपुट या परिदृश्यों से उदाहरण बनाने, कोड को अधिक पठनीय बनाने और ऑब्जेक्ट निर्माण तर्क के लिए एक ही स्थान बनाए रखने में लचीलापन प्रदान करती हैं।

सारांश

  • इंस्टेंस मेथड्स: क्लास इंस्टेंस पर काम करते हैं और इंस्टेंस-विशिष्ट डेटा को संशोधित कर सकते हैं।

  • क्लास तरीके: पहले पैरामीटर के रूप में सीएलएस का उपयोग करके क्लास पर ही काम करें, और क्लास-स्तरीय डेटा को संशोधित कर सकते हैं।

  • स्टेटिक तरीके: क्लास या इंस्टेंस-विशिष्ट डेटा पर काम न करें और उपयोगिता कार्यों के लिए उपयोग किया जाता है।

इन विधियों को प्रभावी ढंग से समझकर और उपयोग करके, आप पायथन में अधिक व्यवस्थित और लचीले ऑब्जेक्ट-ओरिएंटेड कोड लिख सकते हैं।


विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/tapstechie/python-interview-preparation-class-methods-vs-static-methods-explained-4phj?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3