मैं अजगर के लिए नया हूं। मैं यह समझने की कोशिश कर रहा हूं कि आयातित मॉड्यूल के बीच नियंत्रण कैसे बहता है। मुझे समझ में नहीं आता कि कोड त्रुटि क्यों दे रहा है। मैं कुछ भी हासिल करने की कोशिश नहीं कर रहा हूं, मैं सिर्फ त्रुटि के लिए स्पष्टीकरण चाहता हूं


mod1.py

import pckg1.mod2  

print("In mod 1 : My name : ",\_\_name\_\_)    
print("In mod 2 : imported package name :",pckg1.mod2.\_\_name\_\_)   

mod2.py

import pckg1.mod1  

print("In mod 2: My name ",\_\_name\_\_)  
print("In mod2 : imported package name",pckg1.mod1.\_\_name\_\_)  

त्रुटि संदेश:

प्रिंट ("mod2 में: आयातित पैकेज का नाम", pckg1.mod1.__name__) विशेषता त्रुटि: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता नहीं है 'mod1'

आउटपुट:

मॉड 2 में: मेरा नाम pckg1.mod2

0
Vk997620 3 सितंबर 2019, 16:42

1 उत्तर

आप डीबगर में उस व्यवहार को देख सकते हैं। यदि आप mod2.py डीबग करते हैं, तो आप देखेंगे कि यह तुरंत mod1.py में प्रवेश कर जाता है, जो आयात विवरण के कारण होता है। एक बार mod1.py के अंदर, एक और आयात विवरण होता है, जहां निष्पादन mod2.py पर वापस आ जाता है जैसा कि sys.modules< में देखा जा सकता है /a> शब्दकोश, इस समय केवल pckg1 उपलब्ध है, लेकिन यह चाइल्ड नहीं है mod2

mod2.py में आयात विवरण mod1.py को फिर से निष्पादित नहीं करता है (देखें आगे के लिए पायथन सर्कुलर आयात और आयात प्रणाली) सूचना), और निष्पादन प्रिंट स्टेटमेंट के साथ जारी है।

तो आपके उदाहरण में, mod1 सर्कुलर संदर्भ के कारण पूरी तरह से लोड नहीं हुआ है, और इस प्रकार उपलब्ध नहीं है।

0
user7217806 4 सितंबर 2019, 08:55