यह शायद पहले पूछा गया था लेकिन मुझे अपने विशिष्ट प्रश्न का उत्तर नहीं मिला (काफी सामान्य ...)उस वर्ग के लिए सहायक फ़ाइलों के संबंध में पाइथन क्लास परिभाषा को व्यवस्थित तरीके से व्यवस्थित कैसे करें?
यहां मेरे प्रश्न का एक उदाहरण है। कहें कि मेरे पैकेज को 'स्कूल' कहा जाता है, और मेरे पास 'पुस्तक' नामक एक कक्षा है जिसमें इसके साथ .py फाइलें होंगी जिसमें इसके तरीकों का मांस होगा। मुझे यकीन नहीं है कि इसे कैसे व्यवस्थित किया जाए ताकि आयात विवरण अजीब न हों।
मैं फ़ाइलों को व्यवस्थित कैसे करूं?
/school/
pencil/
book/
__init__.py
read.py
burn.py
book.py
मैं, कुछ इस तरह करने में सक्षम होना चाहता हूँ, क्योंकि यह सबसे समझ में आता है:
from school import Book
b = Book(name="The Bible")
b.read()
लेकिन इसके बाद के संस्करण फ़ाइल संरचना से, मुझे क्या करना होगा:
from school.book import Book
b = Book(....etc
या
from school import book
b = book.Book(...etc
टी हेस अजीब/दोहराए गए हैं ... मैं यहाँ क्या खो रहा हूँ?
प्रतिक्रिया के लिए धन्यवाद। लेकिन क्या होगा यदि मेरी पढ़ाई() और जला() विधियां प्रत्येक सैकड़ों लाइनें हैं और मैं नहीं चाहता कि book.py कोड की एक बड़ी गड़बड़ी हो? – Ian
प्रत्येक विधि सैकड़ों लाइनें है? ईमानदारी से, मैं रिफैक्टर करने के तरीकों को खोजने का प्रयास करता हूं ताकि यह कई छोटे कार्य हो। यह हमेशा संभव नहीं है, जाहिर है, लेकिन मैं अभी भी कोशिश करूँगा। आदर्श रूप से, आप चाहते हैं कि प्रत्येक कार्य एक काम करे, और केवल एक चीज, और आप इसे एक 'पृष्ठ' पर फिट करना चाहते हैं (चाहे वह मुद्रित पृष्ठ या स्क्रॉल किए बिना आपके संपादक की एक स्क्रीन हो)। उस ने कहा, भले ही मेरे पास कुछ काम थे जो कई सौ लाइन लंबी थीं, फिर भी मैं उन्हें एक ही कक्षा में रखूंगा। यह पाइथन के ऑब्जेक्ट मॉडल को बेहतर बनाता है और सब कुछ ढूंढना आसान है। – Jonathanb
फिर उन्हें छोटे टुकड़ों में तोड़ा जा सकता है, जिससे आप छोटे स्व-निहित निजी तरीकों और छोटे सार्वजनिक प्रवेश विधियों को पढ़ सकते हैं() और जला() जो छोटे तरीकों के काम को व्यवस्थित करते हैं। लेकिन किसी भी मामले में, मैं व्यक्तिगत रूप से नहीं देखता कि एक अलग फ़ाइल में एक अलग फ़ाइल (कक्षा में संदर्भित अन्य चीज़ों से दूर) में एक बड़ी जटिल विधि को समझना आसान है। – Ben