版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向?qū)ο蟆景咐?-3】垃圾分類處理查詢系統(tǒng)03案例分析在“綠水青山就是金山銀山”理念深入人心的今天,垃圾分類作為生態(tài)文明建設(shè)的重要一環(huán),已成為社會各界關(guān)注的焦點。垃圾分類處理查詢系統(tǒng)以《生活垃圾分類制度實施方案》為依據(jù),通過模擬真實垃圾分類場景,實現(xiàn)了以下核心功能:智能垃圾分類識別、處理流程可視化、環(huán)保知識科普教育及政策宣傳解讀。用戶通過該系統(tǒng)可直觀理解垃圾分類的完整流程——從社區(qū)分類站到城市處理中心的全鏈條運作,深入掌握不同垃圾類型的處理方式與資源循環(huán)利用途徑。系統(tǒng)內(nèi)置的環(huán)保知識庫結(jié)合每類垃圾處理過程,實時輸出《方案》政策解讀、資源回收經(jīng)濟效益分析、環(huán)境影響評估等內(nèi)容,引導用戶深刻體會綠色發(fā)展理念在實際生活中的具體應(yīng)用,增強個人環(huán)保意識與社會責任感。知識儲備抽象類多態(tài)知識儲備知識儲備—抽象類抽象類是一種特殊的類,它不能被實例化,主要用于定義一組必須由子類實現(xiàn)的方法。抽象類為子類提供了一個統(tǒng)一的接口規(guī)范,確保子類實現(xiàn)特定的方法,從而實現(xiàn)多態(tài)性。1.抽象類的基本概念抽象類:包含抽象方法的類,無法直接實例化。抽象方法:只定義方法簽名,但沒有具體實現(xiàn)的方法,必須由子類實現(xiàn)。具體類:繼承自抽象類,并實現(xiàn)了所有抽象方法的類,可以被實例化。知識儲備—抽象類2.創(chuàng)建抽象類Python通過abc模塊提供了抽象基類(AbstractBaseClasses,ABCs)的功能。要定義一個抽象類,你需要:①導入abc模塊。②使用abc.ABC作為元類或abc.abstractmethod裝飾器來標記抽象方法。2.創(chuàng)建抽象類【示例11】定義一個幾何圖形抽象類,該抽象類中具有兩個抽象方法aera()和perimeter(),示例代碼如下:fromabcimportABC,abstractmethodclassShape(ABC): #繼承自ABC(抽象基類)
@abstractmethod #聲明抽象方法
defarea(self):pass@abstractmethoddefperimeter(self):pass知識儲備—抽象類2.創(chuàng)建抽象類抽象類無法實例化。嘗試直接實例化抽象類會引發(fā)TypeError。在以上示例的末尾添加如下代碼:shape=Shape() #會報錯知識儲備—抽象類3.實現(xiàn)抽象類抽象類是一種不能直接實例化的類,必須由子類來實現(xiàn)其定義的抽象方法。如果子類沒有實現(xiàn)所有抽象方法,它也會被視為抽象類,無法實例化。例如,在上面示例的基礎(chǔ)上,添加實現(xiàn)抽象類Shape的子類Rectangle,代碼如下:classRectangle(Shape):def__init__(self,width,height):self.width=widthself.height=heightdefarea(self): #實現(xiàn)抽象方法
returnself.width*self.heightdefperimeter(self): #實現(xiàn)抽象方法
return2*(self.width+self.height)#創(chuàng)建子類對象rect=Rectangle(3,4)print(rect.area()) #輸出:12print(rect.perimeter()) #輸出:14知識儲備—抽象類3.實現(xiàn)抽象類子類必須實現(xiàn)所有在抽象基類中定義的抽象方法,否則也將無法實例化。正確的子類實現(xiàn)如下:classSquare(Shape):def__init__(self,side):self.side=sidedefarea(self):returnself.side**2defperimeter(self):return4*self.side知識儲備—抽象類3.實現(xiàn)抽象類抽象類中可以有非抽象方法,這些方法可以被子類直接繼承或重寫。例如,在上面示例的抽象類Shape中添加一個非抽象方法,修改后的代碼如下:classShape(ABC): #繼承自ABC(抽象基類)
@abstractmethod #聲明抽象方法
defarea(self):pass@abstractmethoddefperimeter(self):passdefdescription(self): #定義非抽象方法
return"這是一個圖形類"知識儲備—抽象類知識儲備—多態(tài)多態(tài)(Polymorphism)是面向?qū)ο缶幊痰暮诵奶匦灾?,它允許不同類的對象通過相同的接口進行調(diào)用,從而實現(xiàn)“同一接口,多種實現(xiàn)”的效果。Python的多態(tài)具有高度靈活性,主要通過繼承、鴨子類型(DuckTyping)和抽象基類(AbstractBaseClasses)三種方式實現(xiàn)。1.繼承與方法重寫繼承與方法重寫實現(xiàn)多態(tài)的核心思想是子類重寫父類的方法,通過父類引用調(diào)用子類實現(xiàn)。【示例12】定義一個動物類(Animal)和一個繼承Animal類的狗類(Dog)和貓類(Cat),在Dog類和Cat類中重寫Animal類的方法,示例代碼如下:classAnimal:defshout(self):passclassDog(Animal):defshout(self):print("汪汪汪!")classCat(Animal):defshout(self):print("喵喵喵~")知識儲備—多態(tài)2.鴨子類型Python是一種動態(tài)類型語言,它支持鴨子類型(DuckTyping),這意味著如果一個對象看起來像鴨子、走起路來像鴨子、叫起來也像鴨子,那么它就可以被當作鴨子。這種方式不需要顯式地聲明接口或類型,只要對象具有所需的方法即可。知識儲備—多態(tài)2.鴨子類型【示例13】定義一個鳥類(Bird)、一個飛機類(Plane)和一個魚類(Fish),示例代碼如下:classBird:deffly(self):print("鳥類飛行")classPlane:deffly(self):print("飛機飛行")classFish:defswim(self):print("魚類游泳")#多態(tài)函數(shù):接受任何有fly方法的對象deflet_it_fly(obj):obj.fly()知識儲備—多態(tài)2.鴨子類型【示例13】(續(xù))bird=Bird()plane=Plane()fish=Fish()let_it_fly(bird)let_it_fly(plane)#let_it_fly(fish)#報錯:AttributeError,因為Fish沒有fly方法知識儲備—多態(tài)鴨子類型提供了一種靈活性和動態(tài)性的編程方式,它適用于許多情況,特別是在需要多態(tài)性但又不想涉及復雜繼承結(jié)構(gòu)的場合。然而,使用鴨子類型也需要考慮到其可能帶來的可讀性降低和維護難度增加的問題。正確的做法是根據(jù)具體的項目和團隊的需要,在靈活性和嚴格類型檢查之間找到平衡點。3.使用抽象基類(AbstractBaseClasses)Python的abc模塊提供了抽象基類的支持,這可以用來定義一個接口或一個共同的規(guī)范,然后通過繼承這些抽象基類來強制實現(xiàn)某些方法。知識儲備—多態(tài)3.使用抽象基類(AbstractBaseClasses)【示例14】定義一個動物類(Animal),在Animal類中定于一個抽象方法,定義繼承Animal類的狗類(Dog)和貓類(Cat),在Dog類和Cat類中重寫Animal類的抽象方法,示例代碼如下:fromabcimportABC,abstractmethodclassAnimal(ABC):@abstractmethoddefshout(self):pass#抽象方法必須有實現(xiàn),除非它是純抽象的(在Python中通常不這樣做)classDog(Animal):defshout(self):print("汪汪汪!")classCat(Animal):defshout(self):print("喵喵喵~")知識儲備—多態(tài)3.使用抽象基類(AbstractBaseClasses)【示例14】(續(xù))#多態(tài)調(diào)用defanimal_shout(animal:Animal):animal.shout()dog=Dog()cat=Cat()animal_shout(dog)animal_shout(cat)知識儲備—多態(tài)案例實現(xiàn)創(chuàng)建名稱為“垃圾分類處理系統(tǒng)”的項目,在項目下創(chuàng)建名稱為garbage_classification的Python文件。準備工作案例實現(xiàn)STEP01定義垃圾分類基礎(chǔ)結(jié)構(gòu)導入ABC和abstractmethod用于創(chuàng)建抽象基類和抽象方法,導入Enum用于創(chuàng)建枚舉類型。fromabcimportABC,abstractmethodfromenumimportEnum#環(huán)保知識庫EDUCATION_MESSAGES={"recyclable":"綠色發(fā)展理念:可回收物的循環(huán)利用能有效減少資源浪費,助力可持續(xù)發(fā)展。","hazardous":"環(huán)保小知識:有害垃圾含有有害物質(zhì),需特殊處理,否則會污染環(huán)境。","kitchen":"政策解讀:濕垃圾易腐爛,經(jīng)過處理可轉(zhuǎn)化為有機肥料,符合循環(huán)經(jīng)濟理念。","other":"行動倡議:盡量減少干垃圾的產(chǎn)生,選擇環(huán)保包裝和耐用產(chǎn)品。"}#垃圾分類類型枚舉classGarbageType(Enum):RECYCLABLE="可回收物"HAZARDOUS="有害垃圾"KITCHEN="濕垃圾"OTHER="干垃圾"案例實現(xiàn)STEP02定義抽象垃圾類創(chuàng)建抽象垃圾類(Garbage)實現(xiàn)多態(tài)基礎(chǔ),定義不同垃圾的處理行為。classGarbage(ABC):def__init__(self,name:str,category:GarbageType):=nameself.category=category@abstractmethoddefprocess_at_community(self)->None:"""在社區(qū)處理站的處理方法"""pass@abstractmethoddefprocess_at_city(self)->None:"""在城市處理中心的處理方法"""pass…案例實現(xiàn)STEP03定義垃圾子類創(chuàng)建具體的垃圾類,繼承自抽象垃圾類Garbage,并實現(xiàn)process_at_community()和process_at_city()方法。(1)可回收垃圾類(RecyclableGarbage)classRecyclableGarbage(Garbage):def__init__(self,name:str):super().__init__(name,GarbageType.RECYCLABLE)defprocess_at_community(self)->None:print(f"[社區(qū)]{}被分類收集,等待運往資源回收中心")defprocess_at_city(self)->None:print(f"[城市]{}在資源回收中心進行分揀、清洗和再生處理")print(self.get_education_message())案例實現(xiàn)STEP04定義垃圾子類創(chuàng)建具體的垃圾類,繼承自抽象垃圾類Garbage,并實現(xiàn)process_at_community()和process_at_city()方法。(2)有害垃圾類(HazardousGarbage)classHazardousGarbage(Garbage):def__init__(self,name:str):super().__init__(name,GarbageType.HAZARDOUS)defprocess_at_community(self)->None:print(f"[社區(qū)]{}被安全包裝,貼上有害垃圾標識")defprocess_at_city(self)->None:print(f"[城市]{}由專業(yè)團隊運往危廢處理廠進行無害化處理")print(self.get_education_message())案例實現(xiàn)STEP05定義垃圾子類創(chuàng)建具體的垃圾類,繼承自抽象垃圾類Garbage,并實現(xiàn)process_at_community()和process_at_city()方法。(3)濕垃圾類(KitchenGarbage)classKitchenGarbage(Garbage):def__init__(self,name:str):super().__init__(name,GarbageType.KITCHEN)defprocess_at_community(self)->None:print(f"[社區(qū)]{}被收集到專用容器,保持密閉防止異味")defprocess_at_city(self)->None:print(f"[城市]{}在生物質(zhì)處理廠進行厭氧發(fā)酵或堆肥處理")print(self.get_education_message())案例實現(xiàn)STEP06定義垃圾子類創(chuàng)建具體的垃圾類,繼承自抽象垃圾類Garbage,并實現(xiàn)process_at_community()和process_at_city()方法。(4)干垃圾類(OtherGarbage)classOtherGarbage(Garbage):def__init__(self,name:str):super().__init__(name,GarbageType.OTHER)defprocess_at_community(self)->None:print(f"[社區(qū)]{}被收集到普通垃圾桶")defprocess_at_city(self)->None:print(f"[城市]{}被運往填埋場或焚燒廠進行最終處理")print(self.get_education_message())案例實現(xiàn)STEP07定義處理站抽象類創(chuàng)建一個抽象基類ProcessingStation,定義處理垃圾的抽象方法。classProcessingStation(ABC):@abstractmethoddefprocess_garbage(self,garbage:Garbage)->None:"""處理垃圾的抽象方法"""pass案例實現(xiàn)STEP08定義處理站子類創(chuàng)建具體的處理站類,繼承自抽象處理站類ProcessingStation,并實現(xiàn)process_garbage()方法。(1)社區(qū)處理站(CommunityStation)classCommunityStation(ProcessingStation):defprocess_garbage(self,garbage:Garbage)->None:print("=====社區(qū)垃圾分類站處理=====")cess_at_community()print("-"*40)(2)城市處理中心(CityStation)classCityStation(ProcessingStation):defprocess_garbage(self,garbage:Garbage)->None:print("=====城市垃圾處理中心處理=====")cess_at_city()print("="*40)案例實現(xiàn)STEP09構(gòu)建用戶交互系統(tǒng)創(chuàng)建一個垃圾分類系統(tǒng)類(GarbageClassificationSystem),管理處理站和預設(shè)垃圾數(shù)據(jù)庫,提供查詢、分類和處理垃圾的功能,以及顯示歡迎信息、幫助信息、預設(shè)垃圾列表和政策信息的功能。(1)系統(tǒng)初始化與數(shù)據(jù)結(jié)構(gòu)設(shè)計classGarbageClassificationSystem:def__init__(self):#創(chuàng)建處理站
munity_station=CommunityStation()self.city_station=CityStation()#預設(shè)常見垃圾數(shù)據(jù)庫
self.garbage_db={"廢紙":GarbageType.RECYCLABLE,"塑料瓶":GarbageType.RECYCLABLE,"金屬制品":GarbageType.RECYCLABLE,"玻璃瓶":GarbageType.RECYCLABLE,…}案例實現(xiàn)STEP10構(gòu)建用戶交互系統(tǒng)(2)核心查詢與處理流程實現(xiàn)垃圾查詢、分類與處理的主邏輯。defclassify_and_process(self,name:str)->None:ifnameinself.garbage_db:category=self.garbage_db[name]#根據(jù)類型創(chuàng)建垃圾對象
ifcategory==GarbageType.RECYCLABLE:garbage=RecyclableGarbage(name)elifcategory==GarbageType.HAZARDOUS:garbage=HazardousGarbage(name)…else:print(f"抱歉,'{name}'不在預設(shè)垃圾列表中。請輸入'列表'查看所有預設(shè)垃圾。")案例實現(xiàn)STEP11構(gòu)建用戶交互系統(tǒng)(3)用戶交互界面設(shè)計實現(xiàn)友好的命令行交互菜單。defshow_welcome(self)->None:"""顯示歡迎信息"""print("\n=====垃圾分類處理系統(tǒng)=====")print("依據(jù)《生活垃圾分類制度實施方案》開發(fā)")print("輸入垃圾名稱查詢分類和處理流程,輸入'幫助'查看使用指南\n")defshow_help(self)->None:"""顯示幫助信息"""print("\n=====使用指南=====")print("1.輸入預設(shè)的常見垃圾名稱(如:塑料瓶、電池)")print("2.系統(tǒng)將顯示該垃圾在社區(qū)和城市的完整處理流程")print("3.輸入'列表'查看所有預設(shè)垃圾")print("4.輸入'政策'了解垃圾分類政策")print("5.輸入'退出'結(jié)束程序")案例實現(xiàn)STEP12構(gòu)建用戶交互系統(tǒng)(4)輔助功能實現(xiàn)提供列表查看、政策解讀等輔助功能。defshow_all_garbage(self)->None:"""顯示所有預設(shè)垃圾"""print("\n=====預設(shè)常見垃圾列表=====")forcategoryinGarbageType:print(f"\n[{category.value}]")category_items=[nameforname,catinself.garbage_db.items()ifcat==category]print(",".join(category_items))defshow_policy_info(self)->None:"""顯示政策信息"""print("\n=====垃圾分類政策解讀=====")print("《生活垃圾分類制度實施方案》明確要求:")print("-2025年底前,全國地級及以上城市基本建成生活垃圾分類處理系統(tǒng)")print("-實現(xiàn)生活垃圾減量化、資源化、無害化處理")print("-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備租賃合同2026年保密合作協(xié)議
- 2026年電影制作投資合同協(xié)議
- 2026年美食探店剪輯合作合同
- 網(wǎng)絡(luò)維護合同協(xié)議2026年服務(wù)承諾條款
- 廣告合同爭議解決方式協(xié)議
- 2026年藝術(shù)表演合作合同
- 2026年保險合同保險合同通知協(xié)議
- 2026年物流倉儲行業(yè)標準化合同協(xié)議
- 2026年火車站垃圾清運協(xié)議合同
- 2026年古董贈與合同協(xié)議
- 小型手持式采茶機
- 太空交通管理規(guī)則-洞察及研究
- 化學反應(yīng)原理大題集訓(含解析)-2026屆高中化學一輪復習講義
- 腹腔鏡手術(shù)應(yīng)用推廣方案與技術(shù)指南
- 北京市西城區(qū)中學課余訓練:現(xiàn)狀洞察與發(fā)展探究
- 規(guī)劃展館改造項目方案(3篇)
- 玉米dh育種技術(shù)
- 頭孢曲松鈉過敏的觀察與急救
- 幼兒園后勤人員培訓會議記錄2025
- 廣告材料供貨方案(3篇)
- 四上語文《快樂讀書吧》作品導讀《世界經(jīng)典神話與傳說》
評論
0/150
提交評論