2010-09-06 17 views
16

विशेष रूप से, मुझे आयातित मॉड्यूल में मुख्य मॉड्यूल से कुछ ऑब्जेक्ट्स और ग्लोबल्स प्राप्त करने की आवश्यकता है। मुझे पता है कि उन चीजों को कैसे ढूंढें जब पैरेंट मॉड्यूल एक बच्चे मॉड्यूल से कुछ विशेष चीज़ चाहता है, लेकिन मैं यह नहीं समझ सकता कि दूसरी दिशा में कैसे जाना है।पायथन में, मैं आयातित मॉड्यूल से मुख्य मॉड्यूल के नेमस्पेस को कैसे एक्सेस कर सकता हूं?

+0

ठीक है, ठीक है, मुझे लगता है कि यह मामला होना चाहिए क्योंकि मुझे इसके बारे में कोई जवाब नहीं मिल रहा है। निचली पंक्ति यह है कि मैं इस कोड में से किसी भी का उपयोग करने के बारे में चिंतित नहीं हूं, मैं बस इस परियोजना को कई फाइलों में अलग करने की कोशिश कर रहा हूं, इसलिए मैं जो खोज रहा हूं उसे ढूंढने के लिए यह अधिक प्रबंधनीय है। मैं वास्तव में नहीं जानता कि मैं क्या कर रहा हूं, ईमानदारी से, इसलिए यह एक सीखने का अनुभव रहा है, लेकिन वास्तव में मैं चाहता हूं कि मैं उस कोड को ढूंढना आसान हो जिसे मैं संपादित करना चाहता हूं, जिसे मैं संपादित करना चाहता हूं। – Damon

+0

मैं मानता हूं कि मॉड्यूल को पैरामीटर पास करने के लिए एक तरीका होना चाहिए जब इसे आयात किया जाता है - जैसे कि जब आप किसी ऑब्जेक्ट कन्स्ट्रक्टर को पास करते हैं। हालांकि मुझे ऐसा करने का एक साफ तरीका कभी नहीं मिला है। – martineau

+2

मैं ठीक उसी कारण के लिए एक ही चीज़ की तलाश में था, इसलिए ऐसा लगता है कि यह एक सामान्य नौसिखिया चीज है .. – sfranky

उत्तर

12
import __main__ 

लेकिन ऐसा मत करें।

+3

पर ऐसा क्यों नहीं करते? – Alcott

+5

@ एल्कोट: क्योंकि यह आपके प्रोग्राम को प्रीट्ज़ेल में आसानी से बदल सकता है। –

+1

@ IgnacioVazquez-Abrams क्या आप उस पर विस्तार कर सकते हैं? –

1

यह सुनिश्चित नहीं है कि यह एक अच्छा अभ्यास है, लेकिन हो सकता है कि आप उन ऑब्जेक्ट्स और वैरिएबल को पास कर सकें जिन्हें आपको आयातित मॉड्यूल में कॉल करने वाले तरीकों या कक्षाओं के पैरामीटर के रूप में आवश्यक हो।

3

मुझे लगता है कि यह काम करेगा:

import sys  
main_mod = sys.modules['__main__'] 
+0

यह '_ __main__ को main_mod' के रूप में आयात करने के बराबर है। –

9

जवाब आप देख रहे हैं जाता है:

import __main__ 

main_global1= __main__.global1 
हालांकि

, जब भी एक मॉड्यूल module1__main__ मॉड्यूल से सामान की जरूरत है, तो:

  • या तो __main__ मॉड्यूल को सभी आवश्यक डेटा प्रदान करना चाहिए पैरामीटर module1 फ़ंक्शन/क्लास,
  • या आपको किसी अन्य मॉड्यूल में साझा करने की आवश्यकता है, और दोनों __main__ और module1 में आयात करें।
संबंधित मुद्दे