2009-02-23 20 views
5

मेरे पास एक मॉड्यूल है जो एक मॉड्यूल आयात करता है, लेकिन कुछ मामलों में आयात किया जा रहा मॉड्यूल मौजूद नहीं हो सकता है। मॉड्यूल आयात किए जाने के बाद आयातित मॉड्यूल के वर्ग से कक्षा उत्तीर्ण होती है। यदि मैं मॉड्यूल मौजूद नहीं है, तो ImportError अपवाद को पकड़ने के लिए, मैं पाइथन को शेष मॉड्यूल को पार्स करने से कैसे रोक सकता हूं? यदि यह संभव नहीं है तो मैं अन्य समाधानों के लिए खुला हूं।पार्सिंग समाप्त होने से पहले मॉड्यूल से कैसे बाहर निकलें?

try: 
    from skynet import SkyNet 
except ImportError: 
    class SelfAwareSkyNet(): 
     pass 
    exit_module_parsing_here() 

class SelfAwareSkyNet(SkyNet): 
    pass 

केवल तरीके यह करने के लिए मुझे लगता है कि कर सकते हैं:

यहाँ एक बुनियादी उदाहरण (selfaware.py) है

  • selfaware.py मॉड्यूल आयात करने से पहले, देखें कि क्या skynet मॉड्यूल उपलब्ध है, और बस एक स्टब कक्षा पास या निर्माण। यदि selfaware.py कई बार आयात किया जाता है तो यह DRY का कारण बन जाएगा।
  • selfaware.py के भीतर try ब्लॉक के साथ परिभाषित कक्षा है। उदा .:

    try: 
        from skynet import SkyNet 
        class SelfAwareSkyNet(SkyNet): 
         pass 
    except ImportError: 
        class SelfAwareSkyNet(): 
         pass 
    
+0

: एक किसी और का समर्थन करता है? क्या यह काम नहीं करता है? क्या यह एक त्रुटि है? –

+0

क्या यहां कोई गूंज है ?? सभी सटीक डुप्लिकेट उत्तरों के साथ क्या है? और क्यों नए डुप्लिकेट पुराने से अधिक स्कोर करते हैं? –

+0

@MuMind मुझे लगता है कि मैंने यह नहीं देखा कि हाइपरबोरियन का जवाब प्रारंभ में गलत होने के बाद संपादित किया गया था। मैंने जवाब को पुनः प्राप्त कर लिया है। –

उत्तर

2

आप इस्तेमाल कर सकते हैं:

try: 
    from skynet import SkyNet 
    inherit_from = SkyNet 
except ImportError: 
    inherit_from = object 

class SelfAwareSkyeNet(inherit_from): 
    pass 

यह केवल तभी कारगर कार्यान्वयन भिन्न नहीं हैं।

संपादित करें: टिप्पणी के बाद नया समाधान।

8

कोशिश: क्या आपके समाधान के साथ गलत क्या है धारा

try: 
    from skynet import SkyNet 

except ImportError: 
    class SelfAwareSkyNet(): 
     pass 

else: 
    class SelfAwareSkyNet(SkyNet): 
     pass 
संबंधित मुद्दे