学习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)来描述这些属性