一、編程思想
面向過程編程(典型:c語言):是一種以過程為中心的編程思想。它強調流程化、線性化、步驟化的思考方式,實現思路就是函數。
面向對象編程:強調整體性和差異性。它將任何事物看做一個統一整個,行為的多樣性和多態性,還有程序可擴展性。面向對象四大特征:抽象,封裝,繼承,多態。
二、類和對象
類其實是一類事物的統稱或概況,是一種歸納,類是對象抽象出來的概念。
對象就是現實真實存在的,可以具體來描述。
三、類的創建
語法:
class ??類名:
????????類的屬性(特征)
????????類的方法(行為)
說明:
- 類名稱、類屬性、類方法都屬于python標識符,需要遵守標識符規范
- 類屬性本質就是變量
- 類方法本質就是函數
1、類的構造方法?
1)類中構造方法名稱都是固定的。只能是?__init__ (init左右兩邊是雙下劃線),名稱不可以修改。如果在類定義時候添加這個構造方法,每當創建類的對象時(類實例化),python解釋器會自動調用該構造方法。構造可以包含多個參數,但是第一參數必須包含self參數。(self是python中默認寫法)。
2)構造方法不能加返回值(構造方法中,不能使用return語句)。
3)當前類中是否編寫構造方法,實例化類的對象時,默認都會調用構造方法。python類的構造方法有且只有一個。
4)構造方法作用:
- 用來實例化類
- 用來初始化類的屬性
2、類的析構方法
析構方法作用:用于資源的回收,釋放對象所占用的資源。
析構方法注意事項:
析構方法名稱是固定。只能是__del__(del左右兩邊是雙下劃線),不能修改。
若在類中定義該方法,每當創建一個類的對象時,使用完成后,python解釋器自動調用析構方法。
四、self的含義
self表示類實例化的對象本身,誰調用類中方法、屬性,self就表示誰。
總結:
- self這個參數不需要手動進行傳參,當某個對象調用方法時,python解釋器會自動把該對象本身作為參數傳遞給self這個形參。
- self也可以改名稱,self只是python中默認寫法。一般都不會修改。
五、面向對象編程的三大特征
1、封裝
定義:封裝是隱藏對象的屬性和方法實現細節,對外部僅僅提供公共訪問的方式。
2、繼承
繼承就是子類繼承父類的屬性(特征)和方法(行為),使得子類具有父類的相同屬性和方法。當然,子類還可有個性屬性,個性方法。
繼承好處:
- 繼承能夠提升代碼的重用率,編寫一個類,可以在多個子類中直接使用;
- 能夠有效進行代碼管理。當某個類有問題需要修改時,需要修改這個類中方法即可,其他子類無需修改。
如何實現繼承?
繼承是一種創建新類的方式。當我們定義一個類的時候,可以繼承某個現有的類。
語法:
class ??子類名稱(父類名稱):
????????pass
多繼承:
?子類同時可以繼承多個父類。
語法:
class ??子類(父類1,父類2,父類3,...):
????????pass
3、多態
作用:具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同內容的函數。
六、實例
# 對象:計算器
# 功能:+-*/清零
class Caculator:def __init__(self,a,b):self.numa=int(a)self.numb=int(b)def add(self):print(f'{self.numa}+{self.numb}={self.numa+self.numb}')def sub(self):print(f'{self.numa}-{self.numb}={self.numa-self.numb}')def mul(self):print(f'{self.numa}*{self.numb}={self.numa*self.numb}')def div(self):print(f'{self.numa}/{self.numb}={self.numa/self.numb}')def cl(self):return 0def run(self):print('歡迎使用計算器')while True:choice=int(input('請輸入功能:1加2減3乘4除5清零6退出系統'))if choice==1:self.add()elif choice==2:self.sub()elif choice==3:self.mul()elif choice==4:self.div()elif choice==5:self.cl()elif choice==6:exit=input('您是否確認退出 y是,n否')if exit=='y':print('歡迎下次訪問')breakelse:warn = input("您的輸入非法,是否重新輸入:y是,n否")if warn == "n":print("歡迎下次使用!")breakreturn Falseif __name__ == '__main__':while True:print('歡迎使用計算器')data1 = int(input('請輸入第一個操作數據'))data2 = int(input('請輸入第二個操作數據'))use=Caculator(data1,data2)use.run()continueexit = input('您是否確認退出 y是,n否')if exit == 'y':print('歡迎下次訪問')break
?