ओपनस्टैक के कोड को पढ़ने के दौरान और मुझे इसका सामना करना पड़ा।ऑब्जेक्ट की __init __() विधि पाइथन में क्या करती है?
एक वर्ग 'सेवा' नामक आधार वर्ग 'वस्तु' विरासत में, और उसके बाद सेवा के __init__()
विधि में, वस्तु की __init__
कहा जाता है। संबंधित कोड इस तरह दिखता है:
वर्ग परिभाषा:
class Service(object):
और सेवा के init विधि परिभाषा:
def __init__(self, host, binary, topic, manager, report_interval=None,
periodic_interval=None, *args, **kwargs):
और सेवा के init में सुपर ('वस्तु' यहाँ) के लिए एक कॉल :
super(Service, self).__init__(*args, **kwargs)
मैं आखिरी कॉल समझ में नहीं आता, object.__init__()
क्या यह वास्तविक करता है ly do? कोई भी मदद कर सकता है?
संदर्भ [पायथन के सुपर कंसिडेड सुपर] (http://rhettinger.wordpress.com/2011/05/26/super-Considered-super/) बहुत मदद करता है। धन्यवाद! –
'रंगीन सेवा' कन्स्ट्रक्टर उदा। 'foo = 'bar'' को पारित किया जाना है, लेकिन यह अंततः' TypeError: object .__ init __() के साथ विफल हो जाएगा कोई पैरामीटर नहीं लेता है। तो 'सेवा' और 'रंग' कक्षाओं के लिए 'सुपर' कॉल में '* args' और' ** kwargs' को पारित करने का क्या मतलब है? आपका उदाहरण उनके बिना वही काम करेगा (और अधिक मजबूत होगा)। – ekhumoro
@ekhumoro उस टिप्पणी को ओपनस्टैक के लेखकों पर निर्देशित किया जाना चाहिए। '' * Args'' भाग उनके कोड से था और कॉलर्स को उस हस्ताक्षर का सम्मान करना होगा। मैंने * रंग * और * रंगीन सेवा * को यह दिखाने के लिए जोड़ा कि एमआरओ * सेवा * से * रंग * से * ऑब्जेक्ट * तक कैसे श्रृंखला कर सकता है। –