2012-10-14 10 views
12

संभव डुप्लिकेट:
Why do you need explicitly have the “self” argument into a Python method?क्लास विधियों के लिए हमेशा पहली तर्क के रूप में स्वयं को क्यों जोड़ते हैं?

मुझे समझ में क्यों स्वयं हमेशा वर्ग तरीकों के लिए पहला तर्क है, यह कुल समझ में आता है, लेकिन यह हमेशा मामला है, तो क्यों जाना प्रत्येक विधि परिभाषा के लिए टाइपिंग की परेशानी के माध्यम से? ऐसा क्यों न करें जो दृश्यों के पीछे स्वचालित रूप से किया जाता है?

क्या यह स्पष्टता के लिए है या क्या ऐसी स्थिति है जहां आप स्वयं को पहला तर्क के रूप में पारित नहीं करना चाहते हैं?

+6

ध्यान दें कि शब्द * क्लास विधि * का मतलब है कि आप जो सोचते हैं उसके लिए कुछ अलग है। ए * विधि * एक वर्ग के स्वामित्व वाला एक कार्य है, जो एक उदाहरण पर कार्य करता है - एक * वर्ग विधि * एक विधि है जिसका स्वामित्व कक्षा के अंतर्गत होता है, जो वर्ग पर कार्य करता है। आप पूर्व के बारे में बात कर रहे हैं (जो परंपरा के द्वारा 'स्वयं' लेते हैं) उत्तरार्द्ध के विरोध में (जो सम्मेलन द्वारा '' cls'' लेते हैं)। –

+0

सुपर सहायक सभी को जवाब देता है, धन्यवाद! –

उत्तर

21

क्योंकि स्पष्ट रूप से स्पष्ट स्पष्ट है। पैरामीटर को एक स्पष्ट आवश्यकता बनाकर, आप कोड समझ, आत्मनिरीक्षण और हेरफेर को सरल बनाते हैं। इसे Python FAQ में आगे बढ़ाया गया है।

इसके अलावा, आप वर्ग विधियों (पहला तर्क के रूप में एक उदाहरण के बजाय एक वर्ग लेने के लिए) को परिभाषित कर सकते हैं, और आप को परिभाषित कर सकते स्थिर तरीकों (एक 'पहली' तर्क बिल्कुल नहीं लेते हैं):

class Foo(object): 
    def aninstancemethod(self): 
     pass 

    @classmethod 
    def aclassmethod(cls): 
     pass 

    @staticmethod 
    def astaticmethod(): 
     pass 
+8

मैं तर्क दूंगा * क्योंकि स्पष्ट से स्पष्ट स्पष्ट है * एक oversimplification है। –

+1

@ लैटवेयर: मुझे शायद अधिक समझाया जाना चाहिए था, लेकिन * पाइथन दर्शन के मूल में ** * स्पष्ट ** से स्पष्ट है। –

+0

बहुत अधिक, और यह यहां एक महत्वपूर्ण बात है, मैं सिर्फ तर्क दूंगा कि कई और (और अधिक महत्वपूर्ण) कारण हैं कि यह पाइथन काम करता है। –

12

गिडो ने समझाया कि here। असल में, विधियां कार्य करती हैं, और कार्यों को किसी भी "छिपे हुए" पैरामीटर को स्वीकार नहीं करना चाहिए, अन्यथा उच्च-आदेश सुविधाएं, जैसे सजावटी, एक समझदार तरीके से उनके साथ सौदा करने में सक्षम नहीं होंगे।

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