python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承
注:本文所有代碼均經過Python 3.7實際運行檢驗,保證其嚴謹性。
本文字數約1300,閱讀時間約為3分鐘。
Python面向對象編程
類的繼承機制
如果一個類A繼承自另一個類B,就把繼承者類A稱為子類,被繼承的類B稱為父類、超類或基類。
私有變量和私有方法
__xxx ——類中的私有變量/方法名(Python的函數也是對象,所以成員方法稱為成員變量也行得通。)
" 雙下劃線 " 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。但是,通過a._A__xxx這種方式,在外面也能夠訪問“私有”變量。
代碼復用
應用繼承可以從已有類中衍生出新的類,添加或修改部分功能。
新類具有舊類中的各種屬性和方法,而不需要進行任何復制。
一個關于類的繼承的例子:汽車、汽油車、電動車
class Car: # 父類。 def __init__(self, name): self.name = name self.remain_mile = 0 def fill_fuel(self, miles): # 加燃料里程。 self.remain_mile = miles def run(self, miles): # 跑miles英里。 print(self.name, end=": ") if self.remain_mile >= miles: self.remain_mile -= miles print("run %d miles!" % (miles,)) else: print("fuel out!")class GasCar(Car): # 子類一。 def fill_fuel(self, gas): # 加汽油gas升。 self.remain_mile = gas * 6 # 每升跑6英里。class ElecCar(Car): # 子類二。 def fill_fuel(self, power): # 充電power度。 self.remain_mile = power * 3.0 #每度電3英里。gcar = GasCar("BMW")gcar.fill_fuel(50.0)gcar.run(200.0)ecar = ElecCar("Tesla")ecar.fill_fuel(60.0)ecar.run(200.0)<<子類與父類
如果兩個類具有“一般-特殊”這種邏輯關系,那么特殊類就可以作為一般類的子類來定義,從父類繼承屬性和方法。
class (): def (self, ...)覆蓋Override
子類對象可以調用父類方法,除非這個方法在子類中被重新定義了。
如果子類同名方法覆蓋了父類的方法,仍然還可以調用父類的方法。使用super().來操作。super()表示返回父類。
子類還可以添加父類中沒有的方法和屬性。
class GasCar(Car): def __init__(self, name, capacity): # 名稱和排量。 super().__init__(name) # 父類初始化方法,只有名稱。 self.capacity = capacity # 增加了排量屬性。關于self
在類的定義中,所有方法的首個參數一般都是self。
self的作用是,在類的內部,實例化過程中傳入的所有數據都賦給這個變量。
self和類是沒有關系的,它脫離了類惡獨立的一個實例變量。
gcar = GasCar("BMW")gcar.fill_fuel(50.0)gcar.run(200.0) # gcar就是類的.run方法中的參數self。GasCar.run(gcar, 200.0) # gcar作為self參數傳入.run方法里。上述代碼中,gcar.run(200.0)和GasCar.run(gcar, 200.0)這兩行代碼是等價的。
至此,“Python零基礎入門學習”系列全部結束。敬請關注新的內容。
Over.
總結
以上是生活随笔為你收集整理的python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 热血上头!程序员想拍桌子离职的1000个
- 下一篇: c# xls 复制一行_C# 复制Exc