मैं उस मॉड्यूल के भीतर से मॉड्यूल का संदर्भ कैसे प्राप्त कर सकता हूं? साथ ही, मैं उस मॉड्यूल वाले पैकेज के संदर्भ कैसे प्राप्त कर सकता हूं?पायथन: मॉड्यूल के अंदर एक मॉड्यूल का संदर्भ कैसे प्राप्त करूं?
उत्तर
import sys
current_module = sys.modules[__name__]
मॉड्यूल को पुनः लोड होने पर इसे छोड़कर काफी सही नहीं होगा; मुझे नहीं लगता कि वहां कोई जगह है जहां एक संदर्भ की गारंटी दी जाती है, अगर वहां था, तो पुनः लोड करना वास्तव में काम नहीं करेगा, है ना? –
रीलोडिंग एक ही मॉड्यूल ऑब्जेक्ट का पुन: उपयोग करता है; कोई नया मॉड्यूल ऑब्जेक्ट नहीं बनाया गया है, इसलिए यह पुनः लोडिंग के चेहरे में अभी भी सही है। – bukzor
आपको लगता है कि मॉड्यूल में एक वर्ग है, तो वर्ग के __module__
संपत्ति वर्ग के मॉड्यूल का नाम है। इस प्रकार आप sys.modules[klass.__module__]
के माध्यम से मॉड्यूल तक पहुंच सकते हैं। यह कार्यों के लिए भी काम करता है।
दरअसल, ऐसा लगता है कि (कम से कम) किसी फ़ंक्शन के लिए, '__module__' प्रॉपर्टी एक मॉड्यूल नहीं है, लेकिन एक स्ट्रिंग है; इस प्रकार एक 'inspect.getabsfile (func .__ मॉड्यूल __) '_TypeError:' os 'के साथ विफल रहता है' मॉड्यूल, क्लास, विधि, फ़ंक्शन, ट्रेसबैक, फ्रेम या कोड ऑब्जेक्ट_ नहीं है; जबकि 'inspect.getabsfile (sys.modules [o .__ मॉड्यूल __]) 'लगता है। – sdaau
धन्यवाद, इसे ठीक किया गया। – Michael
आप वर्तमान मॉड्यूल __name__
मॉड्यूल संदर्भ का उपयोग कर के नाम पर प्राप्त कर सकते हैं sys.modules
शब्दकोश में पाया जा सकता है।
current_module = __import__(__name__)
बारे में पता नहीं आयात है बनें: - अपने स्वाद पर निर्भर करता है - सरल
अजगर documentation
मैं दस्तावेज़ लिंक की सराहना करता हूं। –
एक और तकनीक है, जो sys मॉड्यूल आयात नहीं करता है, और यकीनन देखें। पाइथन केवल एक बार प्रत्येक मॉड्यूल आयात करता है।
यह sys आयात करने से बचने के लिए वास्तव में एक अच्छा तरीका लगता है। पढ़ने के लिए थोड़ा सा अंतर्ज्ञानी होने के अलावा इस दृष्टिकोण के लिए कोई संभावित डाउनसाइड्स हैं? – JeremyDouglass
@ जेरेमी डगलस। यह नही है कि मैं जानता हूँ। __import__ एक कानूनी, दस्तावेज, अंतर्निहित फ़ंक्शन (केवल __xx__ फ़ंक्शन) है। आप इसे 'importlib' पैकेज से बदल सकते हैं (आपको इसे आयात करना होगा)। शायद - मेरे साथ कभी नहीं हुआ - आपको सापेक्ष/पूर्ण आयात के साथ कोई समस्या हो सकती है, यदि एक ही नाम वाला एक मॉड्यूल sys.path में उपलब्ध है, तो इस मामले में आप इसे फ़ंक्शन के 'स्तर' तर्क के साथ हल कर सकते हैं। – Uri
आप बाहर से उस में पारित कर सकते हैं:
mymod.init(mymod)
आदर्श नहीं है, लेकिन यह मेरे वर्तमान यूज-केस के लिए काम करता है।
- 1. पायथन में कक्षा के लिए मॉड्यूल उदाहरण कैसे प्राप्त करूं?
- 2. "मॉड्यूल के अंदर" पैकेज
- 3. पायथन: स्थानीय मॉड्यूल वैश्विक मॉड्यूल
- 4. मैं पायथन में मॉड्यूल कैसे दस्तावेज़ करूं?
- 5. पैकेज के अंदर पायथन में शीर्ष-स्तरीय मॉड्यूल का संदर्भ कैसे लें?
- 6. वीबीएनईटी: वीबी.नेट मॉड्यूल का संदर्भ कैसे लें?
- 7. मैं पायथन में एक तृतीय पक्ष मॉड्यूल कैसे आयात करूं?
- 8. मॉड्यूल # के अंदर class_eval के अंदर वर्ग चर परिभाषित करना
- 9. मॉड्यूल (पायथन)
- 10. एक पायथन मॉड्यूल के 2 अलग-अलग उदाहरण प्राप्त करें
- 11. पायथन मॉड्यूल लेआउट
- 12. Maven मॉड्यूल एक विशिष्ट मॉड्यूल
- 13. पायथन का मॉड्यूल - बचत राज्य?
- 14. स्थिरांक: मॉड्यूल के रूट पर या मॉड्यूल के अंदर एक नामस्थान में?
- 15. पायथन - पूर्ण पैकेज मॉड्यूल नाम प्राप्त करें
- 16. argparse मॉड्यूल पायथन
- 17. पायथन मल्टीप्रोसेसिंग मॉड्यूल
- 18. पायथन मॉड्यूल नाम कैसे बदलें?
- 19. पायथन उपप्रोसेसर मॉड्यूल segfault
- 20. पर्ल मॉड्यूल में फ़ंक्शन संदर्भ कैसे लिखें?
- 21. मैं पायथन मैकेनाइजेशन मॉड्यूल में इतिहास कैसे अक्षम करूं?
- 22. पायथन में __main__ मॉड्यूल के फ़ाइल नाम कैसे प्राप्त करें?
- 23. पायथन मॉड्यूल हटाना?
- 24. पायथन: smtplib मॉड्यूल
- 25. पायथन मॉड्यूल प्रारंभिक आदेश?
- 26. पायथन: मॉड्यूल को छोड़कर पाइइंस्टॉलर
- 27. पायथन: आयातित मॉड्यूल का पूर्ण पथ
- 28. पायथन: Httplib2 मॉड्यूल नहीं
- 29. पायथन मॉड्यूल dlls
- 30. पायथन सीएमडी मॉड्यूल
मुझे संदेह है कि आप इस सवाल से पूछ सकते हैं क्योंकि आपके पास ** मॉड्यूल स्कोप ** (उदाहरण के लिए, एक कार्य या कक्षा के बाहर BLAH = 10) में एक चर है, फिर एक ** वर्ग/फ़ंक्शन वेरिएबल ** नाम दिया गया है, और आप अंतर करना चाहते हैं। यहां एक वैध सवाल यह है: ** क्या यह आवश्यक है? ** स्कोप नियम कुख्यात रूप से गलती से ग्रस्त हैं, खासकर 'बेवकूफ' जो आपके बाद आपके कोड को उठाता है (यानी, आप, 6 महीने बाद)। इस तरह की चाल शायद ही कभी जरूरी है; मैं उन्हें पूरी तरह से टालने का प्रयास करता हूं क्योंकि वे अक्सर भ्रमित और गलत तरीके से संशोधित होते हैं। –
@ केविन जे। राइस "द बेवकूफ" जो आपके बाद आपके कोड को उठाता है (यानी, आप, 6 महीने बाद) "मेरा दिन बना दिया! – arctelix
कौन परवाह करता है कि वह सवाल क्यों पूछ रहा है? ऐसा करने के लिए बहुत सारे वैध कारण हैं। –