我的Python分析成長之路7
- 2020 年 1 月 23 日
- 筆記
類
一、編程範式:
1.函數式編程 def
2.面向過程編程 (Procedural Programming)
基本設計思路就是程序一開始是要着手解決一個大的問題,然後把一個大問題分解成很多個小問題或子過程,這些子過程再執行的過程再繼續分解直到小問題足夠簡單到可以在一個小步驟範圍內解決。
3.面向對象編程 (object oriented programming)
OOP編程是利用「類」和「對象」來創建各種模型來實現對真實世界的描述,使用面向對象編程的原因一方面是因為它可以使程序的維護和擴展變得更簡單,並且可以大大提高程序開發效率 ,另外,基於面向對象的程序可以使它人更加容易理解你的代碼邏輯,從而使團隊開發變得更從容。

1 #面向對象編程 2 class Dog(): 3 '''一次小狗的簡單模擬類''' 4 def __init__(self,name,age): 5 self.name = name 6 self.age = age 7 def eating(self,food): 8 '''模擬小狗吃東西''' 9 print("%s is eating %s"%(self.name,food)) 10 def running(self): 11 '''模擬小狗跑步''' 12 print("%s is running "%self.name) 13 def main(self): 14 self.eating("apple") 15 self.running() 16 if __name__ == "__main__": 17 dog1 = Dog("xiaoming",3) 18 dog1.main()
View Code
1.方法__init__():初始化函數,每當實例化類時,python就會自動運行該函數。調用該函數時,會自動傳遞實參self,它是一個指向實例本身的引用,讓實例能訪問類中的 屬性和方法.__init__()函數中需要的參數,就是實例化類時需要傳遞的參數
2. 其他方法:通過實例來調用該方法
3.類屬性和實例屬性 調用時用.調用 類方法也通過.來調用





1 class Car(): 2 name = "Ryoma" 3 '''一次汽車的簡單模擬類''' 4 def __init__(self,make,model,year): 5 '''汽車的屬性''' 6 self.make = make 7 self.model = model 8 self.year = year 9 self.odometer_ing = 0 10 def get_describe(self): 11 '''車的描述''' 12 print(str(self.make)+' '+str(self.model)+' '+str(self.year)) 13 def read_odometer(self): 14 '''讀里程錶''' 15 print("this car has "+str(self.odometer_ing)+' '+"miles ") 16 def update_odometer(self,miles): 17 '''更新里程錶的數''' 18 self.odometer_ing += miles 19 car = Car("AUDI",'A6',1995) 20 car.update_odometer(100) 21 print(car.odometer_ing) 22 car.read_odometer()
View Code
二、類的三大特性
1.封裝
封裝也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或對象操作,對不可信的進行信息隱藏
2.繼承
繼承是指這樣一種能力,它可以使用現有類的所有功能,並在無需重新編寫原來類的情況下對這些功能進行擴展。
通過繼承創建的類為「子類」或「派生類」。被繼承的類稱為「父類」或「基類」。
繼承實現的方式主要有兩種:實現繼承、接口繼承。實現繼承指的是使用基類的屬性或方法而無需額外的編碼能力。接口繼承指使用屬性和方法的名稱, 但是子類必須提供實現的能力(即重構父類的方法)


1 class Car(): 2 def __init__(self,make,model,year,fill_gas=100): 3 '''汽車的屬性''' 4 self.make = make 5 self.model = model 6 self.year = year 7 self.odometer_ing = 0 8 self.fill_gas = 100 9 def get_describe(self): 10 '''車的描述''' 11 print(str(self.make)+' '+str(self.model)+' '+str(self.year)) 12 def read_odometer(self): 13 '''讀里程錶''' 14 print("this car has "+str(self.odometer_ing)+' '+"miles ") 15 def update_odometer(self,miles): 16 '''更新里程錶的數''' 17 self.odometer_ing += miles 18 def fill_gas_tank(self): 19 print("this var has %s "%self.fill_gas) 20 class ElectricCar(Car): 21 '''創建一個電動車的模擬類''' 22 def __init__(self,make,model,year): 23 super(ElectricCar,self).__init__(make,model,year) 24 self.battery = Battery() 25 def fill_gas_tank(self): 26 print("this car has no fill_gas") 27 class Battery(): 28 '''一次對電池的簡單模擬''' 29 def __init__(self,battery_size=70): 30 self.battery_size = battery_size 31 def describe_battery(self): 32 print("this battery size is %s"%self.battery_size) 33 ecar = ElectricCar('tesla','s',2000) 34 ecar.battery.describe_battery()
View Code


1 class Company(): 2 def __init__(self,name,addr,found_year): 3 self.name = name 4 self.addr = addr 5 self.found_year = found_year 6 def tell(self): 7 print("公司名為%s,地址是%s,成立於%s"%(self.name,self.addr,self.found_year)) 8 def roll_member(self): 9 print("