Python में क्लास मेथड एक ऐसा मेथड है, जो क्लास से बंधा होता है लेकिन उस क्लास के ऑब्जेक्ट से नहीं। स्टैटिक मेथड्स भी समान हैं लेकिन कुछ बुनियादी अंतर हैं। क्लास मेथड्स के लिए, हमें @classmethod डेकोरेटर निर्दिष्ट करना होगा, और स्टैटिक मेथड के लिए @staticmethod डेकोरेटर उपयोग किया जाता है।
क्लास मेथड के लिए सिंटैक्स:
class my_class:
@classmethod
def function_name(cls, arguments):
# फ़ंक्शन बॉडी
return value
स्टैटिक मेथड के लिए सिंटैक्स:
class my_class:
@staticmethod
def function_name(arguments):
# फ़ंक्शन बॉडी
return value
क्लासमेथड और स्टैटिकमेथड में क्या अंतर है?
| क्लास मेथड | स्टैटिक मेथड |
|---|---|
| क्लास मेथड पहला आर्गुमेंट के रूप में cls (क्लास) लेता है। | स्टैटिक मेथड कोई विशिष्ट पैरामीटर नहीं लेता। |
| क्लास मेथड क्लास स्टेट को एक्सेस और संशोधित कर सकता है। | स्टैटिक मेथड क्लास स्टेट को एक्सेस या संशोधित नहीं कर सकता। |
| क्लास मेथड उस क्लास को पैरामीटर के रूप में लेता है ताकि उस क्लास की स्थिति के बारे में जान सके। | स्टैटिक मेथड्स क्लास स्टेट के बारे में नहीं जानते। ये मेथड्स कुछ पैरामीटर्स लेकर यूटिलिटी टास्क करने के लिए उपयोग किए जाते हैं। |
| @classmethod डेकोरेटर यहां उपयोग किया जाता है। | @staticmethod डेकोरेटर यहां उपयोग किया जाता है। |
स्टैटिक मेथड्स कुछ यूटिलिटी टास्क करने के लिए उपयोग किए जाते हैं, और क्लास मेथड्स फैक्ट्री मेथड्स के लिए उपयोग किए जाते हैं। फैक्ट्री मेथड्स विभिन्न उपयोग मामलों के लिए क्लास ऑब्जेक्ट्स लौटा सकते हैं।
उदाहरण कोड
from datetime import date as dt
class Employee:
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def isAdult(age):
if age > 18:
return True
else:
return False
@classmethod
def emp_from_year(emp_class, name, year):
return emp_class(name, dt.today().year - year)
def __str__(self):
return 'Employee Name: {} and Age: {}'.format(self.name, self.age)
e1 = Employee('Dhiman', 25)
print(e1)
e2 = Employee.emp_from_year('Subhas', 1987)
print(e2)
print(Employee.isAdult(25))
print(Employee.isAdult(16))
आउटपुट
Employee Name: Dhiman and Age: 25
Employee Name: Subhas and Age: 31
True
False