जैसे ही यह सब क्लिक हो जाए, प्रोजेक्ट को मज़ेदार समझें। एक वर्ग, विधियाँ और गुण कैसे काम करते हैं, यह समझने के लिए मैंने एक ग्राहक अनुकूल सीएलआई प्रोजेक्ट बनाया।
मेरी निर्देशिका संरचना काफी सरल थी:
└── lib
├── मॉडल
│ ├── __init__.py
│ └── Actor.py
| └── movie.py
├── cli.py
├──debug.py
└──helpers.py
├── पिपफ़ाइल
├── Pipfile.lock
├── README.md
जैसा कि आप संरचना से देख सकते हैं, मैंने एक-से-अनेक एसोसिएशन बनाया जहां एक अभिनेता के पास कई फिल्में होती हैं। इस एसोसिएशन से मेरा मेनू चलन में आया।
ऊपर मेरा मेनू... मेनू() नामक एक फ़ंक्शन द्वारा परिभाषित किया गया था जो मेरी cli.py फ़ाइल में मुख्य() के साथ स्थित था जो उपयोगकर्ता को सीएलआई मेनू दिखाता है:
def main(): while True: welcome() menu() choice = input("> ").strip() if choice == "1": actor_list() elif choice == "2": add_actor() elif choice == "3": delete_actor() elif choice == "4": exit_program() break else: print("Invalid choice. Try again.\n")
यह विशेष फ़ंक्शन कई में से पहला था जहां हमारे उपयोगकर्ता को हमारे मेनू को आसानी से नेविगेट करने की क्षमता देने के लिए if/elif/else स्टेटमेंट के साथ थोड़ी देर का लूप निष्पादित किया गया था।
cli.py को कुछ महत्वपूर्ण कोड ब्लॉक के साथ समाप्त किया जाता है:
if __name__ == "__main__": main()
यह कोड ब्लॉक हमारे दुभाषिया (पायथन) को हमारी फ़ाइल को केवल तभी चलाने के लिए कहता है जब इसे कमांड लाइन से कॉल किया जाता है।
इस परियोजना में सहायक कार्य भी शामिल थे, जिसमें if/elif/else कथनों के साथ थोड़ी देर के लूप का भी उपयोग किया गया था। उदाहरण के लिए अभिनेताओं की हमारी वर्तमान सूची का चयन करते समय नेविगेशन में आसानी दिखाने में एक विशेष रूप से उल्लेखनीय है:
def actor_list(): actor_list = Actor.get_all() if actor_list: print("\n*** UPDATED LIST! ***") for i, actor in enumerate(actor_list, start=1): print(f"{i}. {actor.name}") while True: choice = input("Press 'a' to add an actor\n" "Press 'b' for actor profile\n" "Press 'c' to return to the main menu.\n" "Press 'd' delete an actor.\n").lower() if choice == 'a': add_actor() break elif choice == 'b': actor_profile() break elif choice == 'c': return elif choice == 'd': delete_actor() break else: print("Invalid choice. Please try again.") else: print("List empty!") while True: choice = input("Press 'a' or to add an actor\n" "Press 'b' for main menu.\n").lower() if choice == 'a': add_actor() break elif choice == 'b': return else: print("Invalid choice. Please try again.")
यहाँ मैं न केवल while लूप और if स्टेटमेंट्स का आदी हो गया, बल्कि पायथन में एक इंडेक्स के साथ पुनरावृत्त करने के लिए for लूप के साथ enumerate() का उपयोग करके उपस्थिति और ऑर्डर के लाभों को भी प्राप्त किया, जिससे प्रोजेक्ट के माध्यम से सभी सूचियाँ बाहर आ गईं। एक आदेशित सूची होना।
बेशक हमारे दो मुख्य पात्र क्लास एक्टर और मूवी हैं। किसी विशेष वर्ग का उदाहरण बनाते, अद्यतन करते या हटाते समय वर्ग विधियों के संदर्भ में दोनों में समान कोड शामिल होते हैं, लेकिन अंतर होते हैं:
आइए उदाहरण के लिए हमारी मूवी क्लास लें:
class Movie: all_movies = {} def __init__(self, movie, genre, actor_id, id=None): self.id = id self.movie = movie self.genre = genre self.actor_id = actor_id
चूंकि हमारे पास अपना प्रोजेक्ट सेटअप है जहां एक अभिनेता के पास कई फिल्में हैं, हमारी मूवी क्लास में मूवी उदाहरण और एक विशिष्ट अभिनेता के बीच एक लिंक स्थापित करने के लिए एक अद्वितीय अभिनेता_आईडी पैरामीटर/विशेषता होगी, जिससे अभिनेता की जानकारी का आसान संदर्भ मिल सके।
अब हमारे अभिनेता वर्ग में इस कोड ब्लॉक को देखें:
def movies(self): from models.movie import Movie sql = """ SELECT * FROM movie WHERE actor_id = ? """ CURSOR.execute(sql, (self.id,),) rows = CURSOR.fetchall() return [ Movie.instance_from_db(row) for row in rows ]
यहां हमारी फिल्में() विधि अभिनेता की आईडी का उपयोग करके मूवी तालिका को क्वेरी करके वर्तमान अभिनेता उदाहरण से जुड़ी सभी फिल्मों को पुनः प्राप्त करती है। इसके बाद यह मूवी ऑब्जेक्ट्स की एक सूची लौटाएगा, जो अभिनेता और मूवी के बीच "हैज़-मैनी" संबंध स्थापित करेगा।
चर्चा किए गए कोड ब्लॉक परियोजना के प्राथमिक क्षेत्र थे जहां मैंने अधिक समझ हासिल करने पर ध्यान केंद्रित किया। कुल मिलाकर इस परियोजना ने पायथन में मेरे कौशल को बढ़ाने के लिए एक अच्छा अभ्यास के रूप में काम किया।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3