python - Overriding __init__ in threading.Thread -
इस अधोलेखित क्लास क्या करता है इसकी मेरी समझ: कोड: <पूर्व> यह क्लास को कॉल का एक उदाहरण है: जहां InfoHandler एक टॉरनाडियोज़ सॉकेट बनाता है, मुझे जो समझ में नहीं आ रहा है वह कैसे यदि आप तो हाँ, उन मानों को आउटपुट कुछ ऐसा होगा: जैसा कि आप देख सकते हैं, यह इसमें शामिल नहीं है सुपरक्लास (या अपनी खुद की) विशेषताएँ जब तक कि आप उसे एक उदाहरण पर कॉल न करें। threading.Thread subclass की जांच करना और थोड़ा मार्गदर्शन की आवश्यकता है।
"" फिर से लोड करें मॉड्यूल अगर यह अंतिम रूप से संकलित होने के बाद अपडेट किया गया है। "" "
वर्ग होटस्पेप (थ्रेडिंग। थ्रेड): def __init __ (स्वयं, आउट, मोड, जन = 'उत्पन्न', * आर्ग्स, ** क्वार्ज): self.out = out # यह एक है आउटपुट गंतव्य self.mod = mod self.genname = gen # यह "mod" से एक जनरेटर है self.gen = getattr (mod, self.genname) (* args, ** kwargs) self.loaded = self.current_modtime self .args = args self.kwargs = kwargs थ्रेडिंग। थ्रेड .__ init __ (स्वयं) self.daemon = True @property def current_modtime (self): वापस os.path.getmtime (self.mod .__ फ़ाइल __. replace ("pyc", " पीई ")) डीईएफ रन (स्वयं): जबकि सच: अगर self.current_modtime! = Self.loaded: log.info (" हॉट-स्ैपिंग मॉड्यूल:% s ", self.mod .__ नाम__) self.mod = reload (self .mod) self.loaded = self.current_modtime स्व .gen = getattr (self.mod, self.genname) (* self.args, ** self.kwargs) self.handle (self.gen.next ()) def हैंडल (स्वयं, एएमएम): self.out (elem )
होटस्पेप (InfoHandler.add, info, 'generate', info_queue, first_frame)। स्टार्ट ()
जानकारी एक मॉड्यूल है,
उत्पन्न इसकी विधि और
info_queue, first_frame < / कोड> हैं * args।
आउट, मोड, जन = 'जनरेट करें' टाइप करें
थ्रेडिंग। थ्रेड '
समूह = कोई नहीं, लक्ष्य = कोई नहीं, नाम = कोई नहीं । समूह, लक्ष्य और नाम को उनके डिफ़ॉल्ट (कोई नहीं) के रूप में प्रारंभ किया जाता है जब
थ्रेडिंग। थ्रेड .__ init __ (स्वयं) रन?
थ्रेडिंग के लिए प्रलेखन देखते हैं। , आप देखेंगे
थ्रेडिंग। धागा (समूह = कोई नहीं , लक्ष्य = कोई नहीं, नाम = कोई नहीं, आर्ग्स = (), kwargs = {})
कोई नहीं पर सेट हो जाएगा जब superclass '
__ init __ कहलाता है।
__ निर्देश __ प्रश्न थोड़ा अधिक जटिल है। निम्नलिखित कोड (मैं अपने प्रश्न के रूप में स्पष्टता के लिए उसी नाम का प्रयोग करता हूं):
वर्ग थ्रेड (ऑब्जेक्ट): def __init __ (आत्म, ए = कोई नहीं): self.a = a def b (स्वयं): पास वर्ग होटस्पेप (थ्रेड): def __init __ (आत्म, एक्स = कोई नहीं): प्रिंट ("पहले init: {}"। प्रारूप (स्वयं .__ dict__)) self.x = x super (Hotswap, self) __इनट __ () प्रिंट ("init: {}"। प्रारूप (स्वयं .__ dict__)) def y (स्वयं): पास प्रिंट ("हॉटस्पेप वर्ग में: {}"। प्रारूप (hotswap .__ dict__)) h = हॉटस्पेप () प्रिंट ("Hotswap उदाहरण: {}" पर। प्रारूप (एच। डिक्टो_))
हॉटस्पेप वर्ग पर : init: {} के बाद init: {'y': & lt; फ़ंक्शन y 0x24b9bc & gt ;, '__module__': '__main__', '__doc__': कोई नहीं, '__init__': 0x24b97c पर फ़ंक्शन __init__ & gt;} init: {} एक ': कोई भी नहीं,' एक्स ': कोई नहीं} हाट्स्पेव उदाहरण पर: {' ए ': कोई भी नहीं,' एक्स ': कोई नहीं}
Comments
Post a Comment