2011-01-07 10 views
7

अगर मैं इस तरह की एक निर्देशिका संरचना है:पुलिंग अजगर मॉड्यूल अप पैकेज नेम स्पेस में

package/ 
    __init__.py 
    functions.py  #contains do() 
    classes.py  #contains class A() 

और मैं फोन करने के लिए

import package as p 

मैं कैसे functions की सामग्री को कर सकता हूँ सक्षम होना चाहते हैं, classes, सुलभ के रूप में:

p.do() 
p.A() 

stea में के डी: फाइलों में

p.functions.do() 
p.classes.A() 

उपखंड सुविधा (आसान सहयोग की अनुमति) के लिए ही नहीं है, लेकिन मैं एक ही नाम स्थान में सभी सामग्री को कराना पसंद करते हैं।

उत्तर

13

आप __init__.py में ऐसा कर सकता है (क्योंकि आप क्या आयात जब आप import package है कि):

from package.functions import * 
from package.classes import * 

हालांकि, import * is nearly always a bad idea और इस नहीं अपवादों में से एक है। कहते हैं,

from package.functions import do 
from package.classes import A 

यह भी सीधे do या A तक पहुँचने की अनुमति देता है, लेकिन यह लगभग रूप में नाम टकराव और अन्य समस्याओं कि import * से आते हैं होने का खतरा नहीं है - इसके बजाय, कई संकुल स्पष्ट रूप से सामान्य रूप से प्रयुक्त नामों में से एक सीमित सेट आयात ।

+0

बिल्कुल सही, धन्यवाद। ठीक काम करने वाले कार्यों का चयन करने के लिए मुझे 'आयात *' करने की आवश्यकता नहीं थी। मुझे यह नहीं पता था ('बी आयात बी' से)' पैकेज 'नामस्थान में' पैकेज 'के रूप में' पैकेज 'में रखा जाएगा। हालांकि यह अब स्पष्ट है। – noio

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