1 ##------------------------類-------------------- 2 ''' 3 在面向物件編程中,你撰寫表示現實世界中的事物和情景的類,并基于這些類來創建物件, 4 撰寫類時,你定義一大類物件都有的通用行為,基于類創建 物件時,每個物件都自動具備 5 這種通用行為,然后可根據需要賦予每個物件獨特的個性, 6 7 根據類來創建物件被稱為 實體化,這讓你能夠使用類的實體,你將指定可在實體中存盤什 8 么資訊,定義可對這些實體執行哪些操作,你還將撰寫一些類來擴展既有類的功能,讓相似 9 的類能夠高效地共享代碼,你將把自己撰寫的類存盤在模塊中,并在自己的程式檔案中匯入 10 其他程式員撰寫的類, 11 ''' 12 ##總而言之,類像是一個模板,實體化就是根據模板做好的成品 13 ##創建和使用類 14 15 class Dog(): 16 def __init__(self,name,age): 17 '''初始化屬性name和age''' 18 self.name=name 19 self.age=age 20 21 def sit(self): 22 '''模擬小狗被命令時蹲下''' 23 print(str(self.name.title())+'蹲下!') 24 25 def roll_over(self): 26 '''模擬小狗被命令時打滾''' 27 print(str(self.name.title())+'打滾!') 28 29 ##實體化一個物件my_dog 30 my_dog=Dog('阿爾法',5) 31 ##訪問屬性 32 print('我的小狗的名字叫做:'+my_dog.name.title()) 33 print(my_dog.name.title()+'今年已經有'+str(my_dog.age)+'歲了!') 34 ##呼叫類中的方法(函式) 35 my_dog.sit() 36 my_dog.roll_over() 37 ##創建多個實體: 38 #可按需求根據類創建任意數量的實體, 39 your_dog=Dog('貝塔',3) 40 your_dog.roll_over() 41 42 43 44 -------------------------------------------------------------------- 45 46 class Car(): 47 '''一次模擬汽車的簡單嘗試''' 48 def __init__(self,make,model,year,color): 49 '''初始化汽車的屬性''' 50 self.make=make 51 self.model=model 52 self.year=year 53 self.color=color 54 self.odometer_reading=10##給定的默認值 55 def get_descriptive_name(self): 56 '''回傳整潔的描述資訊''' 57 long_name=str(self.year)+',由'+self.make+'公司'+'生產的'+self.model+self.color+'型號車的性能相當出色!' 58 return long_name.title() 59 def read_odometer(self): 60 '''列印汽車的里程數''' 61 print('這輛'+str(self.model)+'車已經行駛了'+str(self.odometer_reading)+'公里!') 62 63 #屬性值的更新方法2: 64 def update_odomenter(self,mileage): 65 #擴展:禁止里程數回呼 66 if mileage>=self.odometer_reading: 67 self.odometer_reading=mileage 68 else: 69 print('操作非法,拒絕!') 70 71 def increment_odometer(self,miles): 72 '''將里程表讀數增加指定的量''' 73 self.odometer_reading+=miles 74 my_new_car=Car('GWC','悍馬H2',2008,'銀黑色') 75 print(my_new_car.get_descriptive_name()) 76 print(str(my_new_car.read_odometer())) 77 ##修改屬性的值: 78 #1.直接修改屬性的值 79 my_new_car.odometer_reading=200##通過實體化物件直接訪問并修改 80 my_new_car.read_odometer() 81 82 #2.通過方法修改屬性的值 83 my_new_car.update_odomenter(300)##更新屬性odometer_reading的值 84 my_new_car.read_odometer() 85 #3.通過方法對屬性的值進行遞增 86 ''' 87 有時候需要將屬性值遞增特定的量,而不是將其設定為全新的值,假設我們購買了一輛二手 88 車,且從購買到登記期間增加了100英里的里程,下面的方法讓我們能夠傳遞這個增量,并相 89 應地增加里程表讀數: 90 ''' 91 my_new_car=Car('上海一汽','大眾',2017,'銀色') 92 print(my_new_car.get_descriptive_name()) 93 my_new_car.update_odomenter(2000) 94 my_new_car.read_odometer() 95 96 my_new_car.increment_odometer(100) 97 my_new_car.read_odometer() 98 99 100 ##-----------繼承--------------- 101 class ElectricCar(Car): 102 '''電動汽車''' 103 def __init__(self,make,model,year,color): 104 '''初始化父類的屬性''' 105 super().__init__(make,model,year,color) 106 107 108 109 my_tesla=ElectricCar('雅迪','雅迪電動車','2019','紅色') 110 print(my_tesla.get_descriptive_name()) 111 my_tesla.read_odometer()##//通過繼承來的方法訪問父類創建的默認值 112 ''' 113 pythin2.7繼承方法 114 115 class Car(object): 116 def __init__(self, make, model, year): 117 -- snip -- 118 119 class ElectricCar(Car): 120 def __init__(self, make, model, year): 121 super(ElectricCar, self).__init__(make, model, year) 122 ''' 123 ##給子類定義屬性和方法 124 class Bus(Car): 125 '''公交汽車''' 126 def __init__(self,make,model,year,color): 127 '''初始化父類的屬性''' 128 super().__init__(make,model,year,color) 129 self.battery_size=100##電瓶容量 130 131 def display_battery_size(self): 132 print('這輛'+str(self.model)+'的容量是'+str(self.battery_size)) 133 134 #重寫父類的方法 135 def read_odometer(self): 136 print('此公交汽車已經行駛:'+str(self.odometer_reading)+'公里!') 137 my_bus=Bus('天津一汽','2019-公交車','2019','墨綠色') 138 bus_massage=my_bus.get_descriptive_name() 139 print(bus_massage) 140 my_bus.display_battery_size() 141 ##呼叫重寫父類的方法 142 my_bus.odometer_reading+=10 143 my_bus.read_odometer() 144 145 146 ##將實體化的物件用作屬性 147 ''' 148 使用代碼模擬實物時,你可能會發現自己給類添加的細節越來越多:屬性和方法清單以及文 149 件都越來越長,在這種情況下,可能需要將類的一部分作為一個獨立的類提取出來,你可以將大 150 型類拆分成多個協同作業的小類, 151 ''' 152 class bearing(): 153 def __init__(self,name='30mm軸承',materials='碳性鋼'): 154 '''初始化軸承的屬性''' 155 self.name=name 156 self.materials=materials 157 158 def read_property(self): 159 '''回傳整潔的描述資訊''' 160 print(str(self.name)+'的材質是'+str(self.materials)+'打造的') 161 162 class private_car(Car): 163 '''私家車的屬性''' 164 def __init__(self,make,model,year,color): 165 super().__init__(make,model,year,color) 166 self.number_of_passengers=4##可乘坐人數 167 self.Bearing=bearing() 168 def print_pricate_car_massage(self): 169 print('屬性:'+'\n\t廠家:'+str(self.make)+'\n\t名稱:'+str(self.model)+'\n\t生產日期:'+str(self.year)+'\n\t顏色:'+str(self.color)) 170 print('載客量為:'+str(self.number_of_passengers)) 171 172 my_private_car=private_car('上海一汽','寶馬',2020,'藍色') 173 my_private_car.print_pricate_car_massage() 174 my_private_car.bearing.read_property() 175 176 ##匯入單個類(假設統計目錄下的hello.py檔案中有個hello_friend的類) 177 from hello import hello_friend 178 ##在一個模塊中存盤多個類 179 '''雖然同一個模塊中的類之間應存在某種相關性,但可根據需要在一個模塊中存盤任意數量的類,''' 180 ##從一個模塊中匯入多個類(類與類之間用逗號隔開) 181 from hello import hello_friend,hello_teacher 182 183 ##匯入整個模塊 184 '''還可以匯入整個模塊,再使用句點表示法訪問需要的類,這種匯入方法很簡單,代碼也易 185 于閱讀,由于創建類實體的代碼都包含模塊名,因此不會與當前檔案使用的任何名稱發生沖突,''' 186 import hello 187 188 189 ##匯入模塊中的所有類,要匯入模塊中的每個類,可使用下面的語法: 190 from module_name import *
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/147264.html
標籤:Python
