一:問題
python中物件導向有什麼特點?
二:回答
python同其他面嚮物件語言一樣,有3個特徵:封裝、繼承、重寫
簡單理解就是:
封裝:把一系列屬性和操作封裝到一個方法裡面,這樣想要實現某種效果,只需要簡單的調個方法名字就行了,不需要在寫一遍所有的操作內容
繼承:簡單理解就是拼爹,父輩擁有的財富,你直接繼承就能用,比如父輩有結婚這個方法,你繼承來了,別人要白手起家結婚,你直接拿父輩的資產結婚
重寫:簡單理解就是拼爹得來的東西,在你這一輩有一些地方不適用了,要與時俱進,把父輩留給你的改一改,這樣你的生活比父輩更加豐富多彩,即多型,比如父輩結婚的方法寫的是用拖拉機結婚,到你這裡還是結婚但是換成了小汽車結婚了
1 class Father(object): 2 def get_married(self,name="老爸"): 3 print(name) 4 print("用拖拉機結婚!") 5 print("彩禮三大件", ["腳踏車", "電視機", "縫紉機"]) 6 7 class Child(Father): 8 def get_married(self,name="兒子"): 9 print(name) 10 print("用小汽車結婚!") 11 print("彩禮三大件", ["車子", "房子", "票子"]) 12 13 if __name__ == "__main__": 14 clild = Child() 15 clild.get_married("小明") 16 17 >>> 執行結果如下: 18 >>> 小明 19 >>> 用小汽車結婚! 20 >>> 彩禮三大件 ['車子', '房子', '票子']
三:關於python函式過載的說明
過載的條件是:
①一個類裡面
②方法名稱相同
③引數不同
事實上按照這樣的條件,在python中是不建議這樣的寫法,結果是一個類裡面如果出現多個重名的方法,會覆蓋掉先寫的方法。
那python的過載怎麼辦,可以這樣理解,這裡方法的引數不同,存在2種情況:引數型別不同、引數個數不同
而在python裡對引數的型別沒有強制限制,你可以不寫引數的型別,引數的個數又可以接受可變引數,所以python其實不需要過載這個概念。
如下圖所示:用一個方法就能實現多個方法過載的效果
1 class Child(): 2 def info(self,name="兒子",age=0): 3 print(name,age) 4 5 if __name__ == "__main__": 6 clild = Child() 7 #沒傳參 8 clild.info() 9 #傳1個引數 10 clild.info("小明") 11 #傳2個引數 12 clild.info("小明",28) 13 14 >>> 程式執行結果如下: 15 >>> 兒子 0 16 >>> 小明 0 17 >>> 小明 28