इस परिदृश्य पर विचार करें से उपयोगकर्ताओं को रोकने के है:मैं कैसे एक submodule से एक्स का आयात जब यह माता-पिता में उजागर का उपयोग कर __all__
आप एक मॉड्यूल
M
m.py
एक समारोहf
युक्त में परिभाषित किया गया है।यह इस तरह कहा जा सकता है:
import M; M.f()
मॉड्यूल एक आकार जहां यह एक एकल फाइल में है करने के लिए अव्यावहारिक है करने के लिए बढ़ता है। आप submodules
M.X
,M.Y
,M.Z
मेंM
विभाजित औरM/__init__.py
में निम्नलिखित डाल:from .X import * from .Y import * from .Z import * __all__ = ["f"]
मूल कोड अभी भी काम करता है:
import M; M.f()
हालांकि, कोड के नए उपभोक्ताओं को गलती से हो सकता है सीधे सबमिशन तक पहुंचें:
import M.X;
M.X.f()
मैं इसे रोकना चाहता हूं, जैसे कि सभी कोड अभी भी सीधे एम को संबोधित कर रहे हैं, और कोई भी सबोड्यूल्यूल नहीं है।
submodules आंतरिक कोड संगठन के लाभ के लिए हैं, और एम संदर्भित भविष्य में आसान पुनर्गठन की संभावना छोड़ देता है।
एक विकल्प सबमिड्यूल _X
, _Y
, और _Z
को संवाद करने के लिए होगा कि वे आंतरिक हैं। क्या यह अनुशंसित दृष्टिकोण है?
आप नहीं करते हैं। वह एक समस्या क्यों है? आपका मॉड्यूल अभी भी काम करता है, उन वस्तुओं का उपयोग कर कोड अभी भी काम करता है। –
मैं इसे रोकना चाहता हूं, जैसे कि सभी कोड अभी भी सीधे एम को संबोधित कर रहे हैं, और कोई भी सबोड्यूल्यूल नहीं है। submodules आंतरिक कोड संगठन के लाभ के लिए हैं, और एम संदर्भित भविष्य में आसान पुनर्गठन की संभावना छोड़ देता है। (प्रश्न इस विवरण को शामिल करने के लिए संपादित किया गया है।) –
दस्तावेज करने का सही तरीका है और अपने उपयोगकर्ता पर भरोसा करना आपके सलाह –