
我們已經學了很多東西了,今天我們來聊一聊Python中類、實例化、私有屬性、封裝,繼承都是些什麼,他們都可以幹些什麼,我們馬上開始吧開發工具:IDLE (Python 3.7 64-bit) 、PyCharm 註:不需要和小編一樣的版本,只要是Python3的版本就可以,語法方面沒有什麼不同的。

1.類的定義(__init__方法,基類,self)
類的定義:class ClassName(object):,object是父類名,object是一切類的基類。__init__方法是函數寫在類中就是方法,實例化對象的時候必須調用__init__方法。

2.類的屬性
屬性的本質就是變量。

也就是說類的屬性就是它們的共有屬性,將他們共同的部分寫在前面可以節省一部分的代碼,使得代碼顯示的更簡潔美觀。實例化化的屬性,就是他們之間的不同部分,這個是不能省略的。如果要從新修改類屬性,以上代碼為列,可以用從新賦值的方法進行操作,即:dog.eye=4,這樣就完成了從新賦值的修改操作。
3.私有化
對於Python中的類屬性,可以通過雙下劃線」__」來實現一定程度的私有化。「 _」和「 __」的使用 更多的是一種規範/約定,沒有真正達到限制的目的。「_」:以單下劃線開頭只能允許其本身與子類進行訪問,(起到一個保護的作用)。「__」:雙下劃線的表示的是私有類型的變量。這類屬性在運行時屬性名會加上單下劃線和類名。「__foo__」:以雙下劃線開頭和結尾的(__foo__)代表python裡特殊方法專用的標識,如 __init__()。


單下劃線只是隱藏了,但是可以通過直接輸入方法強制訪問到和修改它的參數。

萬一有一天我們真的要修改雙下劃線裡面的參數的要怎麼辦?訪問它要怎麼辦?私有化的方法Python提供了一種getLeg的方法查看私有方法,可以在類中進行訪問。


那麼問題來了,我們需要修改裡面的數據應該怎麼做呢?用setLeg方法修改私有化屬性的參數,

總結:實現私有化的方法:dog._Animal__leg,的方法實現,查看用print(dog._Animal__leg).雙下劃線是主動在leg前加了一個Animal的類名,所以我們看不到。還可以dog._Animal__leg=7,直接修改leg。
4.面向對象的三大特性:封裝、繼承、多態。
封裝:def函數就是一個封裝,將所有屬性和方法封裝到一個類之中。用的時候pip一下就行。


當出現相同的方法的時候,現在的會覆蓋之前的值。可以繼承Animal的類,這樣可以提高寫代碼的效率。「class People( Animal):」在括號內寫入類名就是繼承。

Python中是通過重寫的方式支持多態的,Amerca、chinses、Japen三個方法都重寫了speak的方法。

今天就為大家分享到這裡,因為四一邊學習一邊整理,大家有什麼建議可以提出來,大家一起交流進步。大家加油!