python - Import object from module of same name using __import__ -


मेरे पास निर्देशिका संरचना है जो निम्न प्रकार है:

  root / __main__.py files / __init__ .py foo.py bar.py baz.py  

फ़ाइल के समान नाम के साथ प्रत्येक फ़ाइल में एक वस्तु है आप कल्पना कर सकते हैं कि रेखा foo = MyObj (1) फ़ूज़े में है और बार = मायऑज (2) bar.py में है, आदि।

root / files / में प्रत्येक फ़ाइल से नामित ऑब्जेक्ट आयात करने के लिए मेरे पास root / files / __ init __। Py में निम्न कोड है:

File_list में file_name के लिए रूट / फाइल / में फाइलों की सूची के साथ पॉपुलेटेड है: mod_name = file_name [: - 3] #chop '.py' obj_name = file_name [: -3] #remember, मैं चाहता हूँ कि ऑब्जेक्ट मॉड्यूल obj = __import __ (mod_name, globals = globals (), स्थानीय = स्थानीय (), fromlist = (obj_name), स्तर = 1) all_objects.append (obj) के रूप में एक ही नाम चाहिए

यहां, obj फ़्यू, बार, ... आदि मॉड्यूल और उन मॉड्यूल में निहित वस्तुओं नहीं रखता है।

प्रश्न:

मैं अपने __ आयात __ इनवॉइस को कैसे बदल सकता हूँ जैसे कि वह मॉड्यूल में निहित वस्तु वापस करेगा और मॉड्यूल में ही नहीं?

समाधान:

मैंने पाया है कि वस्तु को निकालने के लिए मुझे getattr (obj, obj_name) कर सकते हैं।

आपको इसके बराबर कुछ कॉल करने की आवश्यकता है:

  obj = __import __ (" mymod ", ...)। Mymod  

  mymod आयात से mymod  

एक वस्तु का नाम उसके नाम से प्राप्त करना

 का उपयोग करके किया जा सकता है <  getattr (obj, 'mymod') # या obj .__ dict __ ['mymod'] # या वार्स (obj) ['mymod']  

एक को चुनें (मुझे getattr के लिए जाना होगा अगर मुझे वास्तव में करना था)।

  obj = getattr (__ आयात __ (mod_name, globals = globals (), स्थानीय = स्थानीय (), Fromlist = (obj_name), स्तर = 1), mod_name)  

Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -