मैं उस मॉड्यूल के भीतर से किसी मॉड्यूल का संदर्भ कैसे प्राप्त कर सकता हूं? इसके अलावा, मुझे उस मॉड्यूल वाले पैकेज का संदर्भ कैसे मिल सकता है?
मैं उस मॉड्यूल के भीतर से किसी मॉड्यूल का संदर्भ कैसे प्राप्त कर सकता हूं? इसके अलावा, मुझे उस मॉड्यूल वाले पैकेज का संदर्भ कैसे मिल सकता है?
जवाबों:
import sys
current_module = sys.modules[__name__]
एक और तकनीक, जो sys मॉड्यूल आयात नहीं करती है, और यकीनन - आपके स्वाद पर निर्भर करती है - सरल:
current_module = __import__(__name__)
पता है कि कोई आयात नहीं है। पायथन प्रत्येक मॉड्यूल को केवल एक बार आयात करता है।
यदि आपके पास उस मॉड्यूल में एक वर्ग है, तो __module__वर्ग की संपत्ति वर्ग का मॉड्यूल नाम है। इस प्रकार आप मॉड्यूल को एक्सेस कर सकते हैं sys.modules[klass.__module__]। यह कार्यों के लिए भी काम करता है।
__module__संपत्ति एक मॉड्यूल नहीं है, लेकिन एक स्ट्रिंग है; इस प्रकार inspect.getabsfile(func.__module__)" TypeError: 'os' एक मॉड्यूल, क्लास, मेथड, फंक्शन, ट्रेसबैक, फ्रेम, या ऑब्जेक्ट ऑब्जेक्ट " के साथ फेल नहीं होता है ; जबकि inspect.getabsfile(sys.modules[o.__module__])पास लगता है।
आप इसे बाहर से पास कर सकते हैं:
mymod.init(mymod)
आदर्श नहीं है, लेकिन यह मेरे वर्तमान उपयोग-मामले के लिए काम करता है।