2011-01-06 5 views
155

cls क्यों कभी कभी self के बजाय पायथन कक्षाओं में एक तर्क के रूप में उपयोग किया जाता है?पायथन कक्षाओं में 'cls' चर का उपयोग क्या किया जाता है?

उदाहरण के लिए:

class Person: 
    def __init__(self, firstname, lastname): 
     self.firstname = firstname 
     self.lastname = lastname 

    @classmethod 
    def from_fullname(cls, fullname): 
     cls.firstname, cls.lastname = fullname.split(' ', 1) 

उत्तर

46

यह एक वर्ग विधि के मामले में प्रयोग किया जाता है। अधिक जानकारी के लिए this reference देखें।

संपादित करें: एड्रियान द्वारा स्पष्ट रूप से, यह एक सम्मेलन है। आप वास्तव में कुछ भी उपयोग कर सकते हैं लेकिन cls और self का उपयोग किया जाता है (PEP8)।

173

"self" और "cls" के बीच भेद PEP 8 में परिभाषित किया गया है। जैसा कि एड्रियान ने कहा, यह अनिवार्य नहीं है। यह एक कोडिंग शैली है। PEP 8 का कहना है:

समारोह और विधि तर्क:

हमेशा उदाहरण के तरीकों को पहले तर्क के लिए self का उपयोग करें।

क्लास विधियों के पहले तर्क के लिए हमेशा cls का उपयोग करें।

2

यह बहुत अच्छा सवाल है लेकिन सवाल के रूप में नहीं चाहता है। 'स्वयं' और 'सीएलएस' प्रयोग विधि के बीच अंतर नहीं है, हालांकि analogically वे एक ही जगह पर हैं

def moon(self,moon_name): 
 
    self.MName =moon_name 
 
    
 
#but here cls method its use is different 
 

 

 
def moon(cls,moon_name): 
 
    instance=cls() 
 
    instance.MName=moon_name

अब तुम दोनों चंद्रमा समारोह कर रहे हैं देख सकते हैं, लेकिन एक वर्ग है, जबकि अंदर इस्तेमाल किया जा सकता अन्य समारोह नाम चंद्रमा किसी भी वर्ग के लिए इस्तेमाल किया जा सकता है।

व्यावहारिक प्रोग्रामिंग दृष्टिकोण के लिए:

जबकि सर्कल वर्ग को डिजाइन करने

हम क्षेत्र विधि का उपयोग के रूप में स्वयं के बजाय सीएलएस क्योंकि हम क्षेत्र केवल सर्कल के विशेष वर्ग तक ही सीमित होना नहीं करना चाहती।

संबंधित मुद्दे