मैंने पहले इस्तेमाल नहीं किए गए एक Django ऐप को एकीकृत करते हुए, मैंने कक्षाओं में कार्यों को परिभाषित करने के लिए उपयोग किए जाने वाले दो अलग-अलग तरीकों को पाया। लेखक उन दोनों को बहुत ही जानबूझकर उपयोग करने लगता है। पहले एक मैं खुद एक बहुत का उपयोग करें:
class Dummy(object):
def some_function(self,*args,**kwargs):
do something here
self is the class instance
दूसरा वह है जिसका मैं उपयोग नहीं करता हूं, ज्यादातर इसलिए क्योंकि मुझे समझ नहीं आता कि इसका उपयोग कब करना है, और इसके लिए क्या है:
class Dummy(object):
@classmethod
def some_function(cls,*args,**kwargs):
do something here
cls refers to what?
पायथन डॉक्स में classmethod
डेकोरेटर को इस वाक्य के साथ समझाया गया है:
एक वर्ग विधि कक्षा को पहले तर्क के रूप में प्राप्त करती है, ठीक उसी तरह जैसे कि एक इंस्टेंस विधि उदाहरण प्राप्त करती है।
तो मुझे लगता है कि खुद cls
को संदर्भित करता Dummy
है ( class
, उदाहरण नहीं)। मुझे समझ में नहीं आया कि यह क्यों मौजूद है, क्योंकि मैं हमेशा ऐसा कर सकता था:
type(self).do_something_with_the_class
क्या यह सिर्फ स्पष्टता के लिए है, या क्या मुझे सबसे महत्वपूर्ण हिस्सा याद है: डरावना और आकर्षक चीजें जो इसके बिना नहीं हो सकती थीं?