2011-07-26 12 views
5

मैं पाइथन में गोताखोरी के माध्यम से पाइथन सीख रहा हूं। दस्तावेज के माध्यम से, कुछ प्रश्न और समझने में असमर्थ हैं।पायथन कक्षाएं और __init__ विधि

1) BaseClass

2) InheritClass

वास्तव में क्या होता है जब हम एक चर, जब InheritClass शामिल नहीं है के लिए एक InheritClass उदाहरण आवंटित एक __init__ विधि और बेसक्लास करता है?

  • BaseClass__init__ विधि स्वतः
  • कहा जाता है इसके अलावा, मुझे अन्य चीजें हैं जो हुड के नीचे हो बताओ है।

वास्तव में fileInfo.py उदाहरण मुझे गंभीर सिरदर्द दे रहा है, मैं समझने में असमर्थ हूं कि चीजें कैसे काम कर रही हैं।

उत्तर

6

हां, BaseClass.__init__ स्वचालित रूप से कॉल किया जाएगा। मूल वर्ग में परिभाषित किसी भी अन्य तरीकों के लिए ही जाता है लेकिन बाल वर्ग नहीं। देखें:

>>> class Parent(object): 
... def __init__(self): 
...  print 'Parent.__init__' 
... def func(self, x): 
...  print x 
... 
>>> class Child(Parent): 
... pass 
... 
>>> x = Child() 
Parent.__init__ 
>>> x.func(1) 
1 

बच्चे को अपने माता-पिता के तरीके प्राप्त होते हैं। यह उन्हें ओवरराइड कर सकता है, लेकिन इसे नहीं करना है।

+0

आप कहने का मतलब था, 'बेस क्लास' में हर विधि को कॉल करने के बावजूद उन्हें बुलाया जाएगा या नहीं ?? –

+2

नहीं, 'child.func' माता-पिता वर्ग में 'func' कॉल करेगा यदि यह बाल वर्ग में मौजूद नहीं है। – FogleBird

+2

मुद्दा यह है कि 'चाइल्ड' बनाने पर, 'चाइल्ड' की '__init__' विधि' पर एक निहित कॉल है, जिसे विरासत में तब भी प्राप्त किया जाता है जब इसे स्पष्ट रूप से परिभाषित नहीं किया जाता है। –

4

@FogleBird पहले से ही अपने प्रश्न का उत्तर है, लेकिन मैं कुछ जोड़ना चाहते थे और उनकी पोस्ट पर टिप्पणी नहीं कर सकते हैं:

तुम भी super function को देखने के लिए चाहते हो सकता है। यह एक बच्चे के अंदर से माता-पिता की विधि को कॉल करने का एक तरीका है। जब आप एक विधि का विस्तार करना चाहते यह उपयोगी है, उदाहरण के लिए:

class ParentClass(object): 
    def __init__(self, x): 
     self.x = x 

class ChildClass(ParentClass): 
    def __init__(self, x, y): 
     self.y = y 
     super(ChildClass, self).__init__(x) 

यह कर सकते हैं निश्चित रूप से धरना तरीकों कि एक बहुत अधिक जटिल हैं, नहीं इसी नाम से __init__ विधि या यहां तक ​​कि एक विधि!

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