पायथन में, एक वर्ग के भीतर के तरीकों को इंस्टेंस तरीकों, क्लास तरीकों और स्थिर तरीकों में वर्गीकृत किया जा सकता है। प्रत्येक एक अद्वितीय उद्देश्य को पूरा करता है और कक्षा और उसके उदाहरणों तक विभिन्न स्तरों तक पहुंच प्रदान करता है। इस ब्लॉग में, हम कक्षा विधियों और स्थैतिक विधियों, उनका उपयोग कैसे करें, और आपके सामने आने वाले सामान्य साक्षात्कार प्रश्नों का पता लगाएंगे।
वर्ग विधियों और स्थैतिक विधियों में गोता लगाने से पहले, आइए संक्षेप में उदाहरण विधियों का पुनर्कथन करें:
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
इस उदाहरण में, ऐड एक स्थिर विधि है जो किसी भी वर्ग या इंस्टेंस डेटा से स्वतंत्र रूप से जोड़ कार्य करता है।
इंस्टेंस मेथड्स: क्लास (स्वयं) के एक इंस्टेंस पर काम करें।
क्लास तरीके: क्लास पर ही काम करें (सीएलएस)।
स्टेटिक तरीके: क्लास या इंस्टेंस-विशिष्ट डेटा पर काम न करें।
क्लास तरीके: पहले पैरामीटर के रूप में सीएलएस का उपयोग करके क्लास पर ही काम करें। वे कक्षा-स्तरीय डेटा को संशोधित कर सकते हैं।
स्टेटिक तरीके: वर्ग और उदाहरण-विशिष्ट डेटा से स्वतंत्र हैं। वे सीएलएस या सेल्फ को पहले पैरामीटर के रूप में नहीं लेते हैं।
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 एक स्थिर विधि है जो जांच करती है कि कोई वर्ष वैध है या नहीं।
वैकल्पिक कंस्ट्रक्टर के रूप में क्लास विधियां विभिन्न प्रकार के इनपुट या परिदृश्यों से उदाहरण बनाने, कोड को अधिक पठनीय बनाने और ऑब्जेक्ट निर्माण तर्क के लिए एक ही स्थान बनाए रखने में लचीलापन प्रदान करती हैं।
इंस्टेंस मेथड्स: क्लास इंस्टेंस पर काम करते हैं और इंस्टेंस-विशिष्ट डेटा को संशोधित कर सकते हैं।
क्लास तरीके: पहले पैरामीटर के रूप में सीएलएस का उपयोग करके क्लास पर ही काम करें, और क्लास-स्तरीय डेटा को संशोधित कर सकते हैं।
स्टेटिक तरीके: क्लास या इंस्टेंस-विशिष्ट डेटा पर काम न करें और उपयोगिता कार्यों के लिए उपयोग किया जाता है।
इन विधियों को प्रभावी ढंग से समझकर और उपयोग करके, आप पायथन में अधिक व्यवस्थित और लचीले ऑब्जेक्ट-ओरिएंटेड कोड लिख सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3