2010-05-19 13 views
18

जावा (या php) की तरह, मैं कक्षाओं को फ़ाइलों को अलग करने के लिए उपयोग कर रहा हूं।
क्या यह पाइथन में एक ही सौदा है? प्लस, मुझे फ़ाइल का नाम कैसे देना चाहिए?
क्लासरनाम.py जैसे क्लासरनाम या ClassName.py जैसा ही?
क्या मुझे कुछ विशेष करने की ज़रूरत है यदि मैं इस वर्ग से कोई ऑब्जेक्ट बनाना चाहता हूं या यह तथ्य यह है कि यह "प्रोजेक्ट" (नेटबीन्स) में है, तो इससे कोई ऑब्जेक्ट बनाना ठीक है?विभिन्न फाइलों में पायथन में कक्षाएं हैं?

+2

डुप्लिकेट: http://stackoverflow.com/questions/106896/how-many-python-classes-should-i-put-in-one-file –

उत्तर

32

पायथन में, एक फ़ाइल को module कहा जाता है। एक मॉड्यूल में एकाधिक कक्षाएं या कार्य शामिल हो सकते हैं।

चूंकि पाइथन केवल ओओ भाषा नहीं है, यह समझ में नहीं आता है कि एक नियम है जो कहता है, एक फ़ाइल में केवल एक वर्ग होना चाहिए।

एक फ़ाइल (मॉड्यूल) में कक्षाओं/कार्यों को एक साथ होना चाहिए, यानी समान कार्यक्षमता प्रदान करें या एक-दूसरे पर निर्भर रहें।
बेशक आपको इसे अतिरंजित नहीं करना चाहिए। यदि आपके मॉड्यूल में बहुत अधिक कक्षाएं या कार्य शामिल हैं तो पठनीयता वास्तव में पीड़ित है। तो संभवतः कार्यक्षमता को विभिन्न मॉड्यूल में पुन: समूहित करने और packages बनाने का समय है।


नामकरण परंपराओं के लिए, आप PEP 8 लेकिन संक्षेप में भी पढ़ सकते हैं:

कक्षा नाम

लगभग बिना किसी अपवाद के, वर्ग के नाम CapWords सम्मेलन का उपयोग करें। आंतरिक उपयोग के लिए कक्षाओं के अलावा एक अग्रणी अंडरस्कोर है।

और

पैकेज और मॉड्यूल नाम

मॉड्यूल छोटा है, सभी लोअरकेस नाम होना चाहिए। मॉड्यूल नाम में अंडरस्कोर का उपयोग किया जा सकता है यदि यह पठनीयता में सुधार करता है। पायथन पैकेज में छोटे, सभी-लोअरकेस नाम भी होना चाहिए, हालांकि अंडरस्कोर का उपयोग निराश है।

के बाद से मॉड्यूल नामों को दर्ज करने के लिए मैप की जाती हैं, और कुछ फाइल सिस्टम केस संवेदी है और लंबे समय के नाम काट-छांट कर रहे हैं, यह महत्वपूर्ण है कि मॉड्यूल नाम काफी कम होने के लिए चुना जाना - इस यूनिक्स पर एक समस्या नहीं होगी , लेकिन यह समस्या तब हो सकती है जब कोड पुराने मैक या विंडोज संस्करण, या डॉस में ले जाया जाता है।


एक वस्तु का दृष्टांत करने के लिए, आप अपनी फ़ाइल में वर्ग आयात करने के लिए किया है। ईजी

>>> from mymodule import MyClass 
>>> obj = MyClass() 

या

>>> import mymodule 
>>> obj = mymodule.MyClass() 

या

>>> from mypackage.mymodule import MyClass 
>>> obj = MyClass() 

आप आवश्यक बुनियादी सामान पूछ रहे हैं, तो मैं tutorial पढ़ने के लिए सलाह देते हैं।

+0

नामकरण के लिए पीईपी 8 http: //www.python देखें। संगठन/देव/पेप्स/पेप-0008/ – Mark

+0

ठीक है, क्योंकि इसे मॉड्यूल कहा जाता है, क्या मुझे इसे आयात करने की आवश्यकता है? और यदि हां, तो मान लें कि मेरा फ़ाइल नाम site.py है और मैं अपनी दूसरी फ़ाइल में कक्षाओं का उपयोग करना चाहता हूं blabla.py, क्या मैं आयात साइट.py जैसे कुछ लिखूं? – Asaf

+1

@Asaf: मेरा अद्यतन उत्तर देखें। आपको आयात करने के लिए कैसे विभिन्न चीजों पर निर्भर करता है। यदि मॉड्यूल एक ही पैकेज में हैं तो आप मॉड्यूल आयात कर सकते हैं। यदि नहीं, तो आपको पैकेज भी आयात करना होगा। ** कभी नहीं ** फ़ाइल प्रत्यय शामिल करें (यानी '.py')। सही तरीके से आयात करने के बारे में SO पर ट्यूटोरियल पढ़ें और यहां खोजें। यह सवाल पहले से ही पूछा गया था। –

1

नहीं, आप एक ही फ़ाइल में एकाधिक कक्षाओं (और फ़ंक्शंस इत्यादि) को परिभाषित कर सकते हैं। एक फाइल को मॉड्यूल भी कहा जाता है।

मॉड्यूल/फ़ाइल में परिभाषित कक्षाओं/कार्यों का उपयोग करने के लिए, आपको मॉड्यूल/फ़ाइल import की आवश्यकता होगी।

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