學習Python類時,我們明白了類的本質,以及所謂的面向對象編程思想強調的對事物本身的屬性,我們對某一類事物進行描述——采用了很多方法,這些方法描述了類的屬性(比如貓科動物的眼睛,四肢,是否哺乳類等等)老虎屬於貓科動物,因此我們可以用貓科動物的類描述來描述老虎。但除了這些共性之外,老虎自身也具有一定的差異性,這就引出了繼承這一概念:
即我們在描述老虎這一對象時,可以保留貓科動物這個類的屬性,同時為老虎描述新的 屬性,當然,我們也是創建老虎類來描述老虎(畢竟還有東北虎,華南虎之分)。下面請見一段代碼:
1 class Car(): 2 def __init__(self,make,model,year): 3 self.make = make 4 self.model = model 5 self.year = year 6 self.odometer_reading = 0 7 8 def get_descriptive_name(self): 9 long_name = str(self.year)+' '+self.make+' '+self.model 10 return long_name.title() 11 12 def red_odometer(self): 13 print("This car has "+str(self.odometer_reading)+" miles on it.") 14 15 def updata_odometer(self,mileage): 16 if migeage >= self.odometer_reading: 17 self_odometer_reading = mileage 18 else: 19 print("You can't roll back an odometer!") 20 21 def increment_odometer(self,miles): 22 self.odometer_reading = self.odometer_reading+miles 23 24 class Battery(): 25 def __init__(self,battery_size=70): 26 self.battery_size = battery_size 27 28 def describe_battery(self): 29 print("This car has a "+str(self.battery_size)+"-kwh battery.") 30 31 32 class ElectricCar(Car): 33 def __init__(self,make,model,year): 34 super().__init__(make,model,year) 35 self.battery = Battery() 36 37 38 my_tesla = ElectricCar('tesla','models',2016) 39 print(my_tesla.get_descriptive_name()) 40 my_tesla.battery.describe_battery() 41
代碼中先創建了一個類,用來描述Car,但是我們要描述特斯拉這種電動汽車,可以繼承Car的屬性,同時創建自身的一些屬性。
2 隨着屬性元素越來越多,類中方法的描述也越來越多,因此可以將一些屬性獨立出來,也封裝成一個類,只不過在使用的時候,將這些小類實例化成屬性。比如上述代碼中對battery的描述
這里再次強調:用類描述事物的方法:1 初始化類的屬性 2:用方法(def)來描述這些屬性