2010-09-27 11 views
19

कोई चीज जो मैं हर समय कर लोगों को देखने है:ओवरराइड करना एक माता पिता के वर्ग के तरीकों

class Man(object): 
    def say_hi(self): 
     print('Hello, World.') 

class ExcitingMan(Man): 
    def say_hi(self): 
     print('Wow!') 
     super(ExcitingMan, self).say_hi() # Calling the parent version once done with custom stuff. 

कुछ मैं कभी नहीं देखना है कि लोगों को कर रही है:

class Man(object): 
    def say_hi(self): 
     print('Hello, World.') 

class ExcitingMan(Man): 
    def say_hi(self): 
     print('Wow!') 
     return super(ExcitingMan, self).say_hi() # Returning the value of the call, so as to fulfill the parent class's contract. 

इस है क्योंकि मैं सभी के साथ लटका गलत प्रोग्रामर, या यह एक अच्छे कारण के लिए है?

+24

'ExcitingMan.say_hi की वापसी मूल्य()' अक्सर बहुत रोमांचक सबसे प्रोसेसर संभाल करने के लिए है। – intuited

उत्तर

8

मैं बहस चाहते हैं कि स्पष्ट रूप से सुपर वर्ग विधि की वापसी मान लौटने अधिक विवेकपूर्ण (दुर्लभ मामले में जहां बच्चे को दबाने के लिए करना चाहता को छोड़कर) है। विशेष रूप से जब आप नहीं जानते कि वास्तव में क्या कर रहा है। सहमत हैं, पायथन में आप आमतौर पर सुपर क्लास विधि देख सकते हैं और यह पता लगा सकते हैं कि यह क्या करता है, लेकिन फिर भी।

बेशक लोग हैं, जो दूसरे संस्करण लिखा माता पिता वर्ग खुद को लिखित और/या जाना जाता है यह कोई वापसी मूल्य होता है हो सकता है। उस स्थिति में उन्होंने बिना किसी स्पष्ट वापसी कथन का निर्णय लिया होगा।

3

मुझे लगता है कि, कम से कम इस मामले में, माता-पिता समारोह कुछ भी वापस नहीं करता है क्योंकि, इसके परिणाम लौटने का कोई मतलब नहीं है। सामान्य रूप से, जब मूल कार्य कुछ वापस कर देता है, मुझे लगता है कि यह एक अच्छा अभ्यास है।

वास्तव में, या नहीं, तुम वापस क्या सुपर वर्ग करता है वास्तव में क्या आप कोड क्या करना चाहते हैं पर निर्भर करता है। ऐसा करें अगर आप यही चाहते हैं और क्या उचित है।

5

उदाहरण में आप माता-पिता वर्ग विधि कोई स्पष्ट वापसी कथन है और इसलिए लौटने कोई नहीं है दे। तो इस मामले में कोई तत्काल मुद्दा नहीं है। लेकिन ध्यान दें कि किसी को माता-पिता को एक मूल्य वापस करने के लिए संशोधित करना चाहिए जिसे अब हमें प्रत्येक बच्चे को संशोधित करने की आवश्यकता है।

मुझे लगता है कि अपने सुझाव सही है।

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