2012-02-03 9 views
8

मेरे पास एक लंबा मॉड्यूल नाम है और मैं अपने दस्तावेज़ में इसे कई बार टाइप करने से बचना चाहता हूं। मैं बस import long_ass_module_name as lamn कर सकता हूं और इसे इस तरह से कॉल कर सकता हूं। हालांकि, इस मॉड्यूल में कई सबमिड्यूल हैं जिन्हें मैं आयात और उपयोग करना चाहता हूं।पायथन - आप अपने सबमिड्यूल आयात करने के लिए मॉड्यूल के उपनाम का उपयोग कैसे कर सकते हैं?

इस मामले में मैं import lamn.sub_module_1 लिखने में सक्षम नहीं हूं क्योंकि पाइथन आयात इस lias को मेरे long_ass_module_name के लिए नहीं पहचानता है। इसे कैसे प्राप्त किया जा सकता है?

क्या मुझे अपने मुख्य मॉड्यूल के __init__.py में स्वचालित रूप से सभी submodules आयात करना चाहिए?

उत्तर

11

import my_long_module_name as mlmn 
import my_long_module_name.submodule 

mlmn.submodule.function() 

import बयान हमेशा मॉड्यूल का पूरा नाम लेता है

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

1

यह (अत्यधिक unrecommendable) वर्तमान नाम स्थान के लिए एक वस्तु के सभी सदस्यों को आयात करने का तरीका vars() शब्दकोश ऊपर देखकर भी काम करता है:

import my_bad_ass_long_module.bafd as b 

# get __dict__ of current namespace 
myn = vars() 
for k,v in vars(b).items(): 
    # populate this namespace with the all the members of the b namespace (overwriting!) 
    myn[k] = v 
संबंधित मुद्दे

 संबंधित मुद्दे