एक क्लास मेथड अपने पहले आर्गुमेंट के रूप में क्लास को ही प्राप्त करता है। इस तरह हम क्लास से पहले इंस्टेंस बनाए बिना क्लास के अंदर मेथड को कॉल करने में सक्षम होते हैं। हम क्लास में निहित मेथड की घोषणा से पहले डेकोरेटर @classmethod का उपयोग करते हैं और फिर हम सीधे मेथड को एक्सेस कर सकते हैं। नीचे क्लासमेथड्स की मुख्य विशेषताएं दी गई हैं।
- एक क्लासमेथड एक क्लास से बंधा होता है और उपयोग किए जाने के लिए क्लास के इंस्टेंशिएशन पर निर्भर नहीं करता।
- एक क्लासमेथड एक क्लास को संशोधित कर सकता है जो बदले में क्लास के सभी इंस्टेंसेज तक फैलता है।
classmethod का उपयोग करना
नीचे दिए गए उदाहरण में हम WeekDay नामक एक क्लास बनाते हैं और इसमें daynames नामक एक मेथड बनाते हैं। फिर हम इस मेथड को क्लास को पहले इंस्टेंशिएट किए बिना एक्सेस करते हैं जिसका अर्थ है क्लास से कोई ऑब्जेक्ट बनाए बिना।
उदाहरण
class WeekDay:
day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
# क्लास मेथड लागू करना
@classmethod
def daynames(n):
print('The WeekDays are', n.day_name)
WeekDay.daynames()
# या
WeekDay().daynames()
आउटपुट
उपरोक्त कोड चलाने पर निम्न परिणाम मिलता है:
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
classmethod का उपयोग किए बिना
क्लासमेथड के बिना समान परिणाम प्राप्त करने के लिए हम मेथड को क्लास के बिना घोषित कर सकते हैं। यह उस कारण को दर्शाता है जिसके लिए हमें क्लास मेथड की आवश्यकता होती है।
उदाहरण
def daynames():
day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
print('The WeekDays are', day_name)
daynames()
आउटपुट
उपरोक्त कोड चलाने पर निम्न परिणाम मिलता है:
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']