这章主要学习类的继承,并不是每个类都是从空白开始,一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原有的类称为父类,而新的类称为子类,同时子类还可以定义自己的属性和方法。
学习的主要内容有1;类的继承,2;子类定义属性和方法
代码有点长,思路是先写父类,再写子类,子类继承父类的属性和方法,主要看如何继承的。
1:类的继承
class Car: '''一次模拟汽车的简单尝试''' def __init__(self,make,model,year): self.make=make self.model=model self.year=year # 注意这个属性 并没有添加到形参里去。 self.odometer_reading=0 # 方法1,展示这辆车的全部属性。 def get_descriptive_name(self): long_name=f"{self.year} {self.make} {self.model}" # 这里用的不是print了 而是返回值 return long_name.title() # 方法2, 展示这辆车的公里数 def read_odometer(self): print(f"This car has {self.odometer_reading} mile on it ") # 方法3, 这个方法对应公里数的方法,进行判断。 def update_odometer(self,mileage): if mileage >= self.odometer_reading: self.odometer_reading=mileage else: print("You can's roll back an odometer!") # 方法4 还是针对公里数的方法 如果调用了这个方法,则公里数自动发生变化 def increment_odometer(self,miles): self.odometer_reading+=miles # 注意这里是子类 class ElectricCar(Car): """电动汽车的独特之处""" # 子类建立属性,建立的是父类的属性 def __init__(self,make,model,year): ''' 初始化父类的属性''' # 使用的是super().inti方法 super().__init__(make,model,year) # 实例化对象,名字是特斯拉 my_tesla=ElectricCar('teasla','model s','2019') # 子类调用父类的方法1 print(my_tesla.get_descriptive_name())
拆开来看如下:
2:给子类定义属性和方法:
父类的代码就不写了,这里要注意的是:
1;添加子类属性要在父类属性初始化之后
# 注意这里是子类 class ElectricCar(Car): """电动汽车的独特之处""" # 子类建立属性,建立的是父类的属性 def __init__(self,make,model,year): ''' 初始化父类的属性''' # 使用的是super().inti方法 super().__init__(make,model,year) # 定义了子类的属性,电瓶 # 注意定义子类属性的顺序是先初始化父类属性,之后再添加子类属性 self.battery_size=75 # 创建子类的方法1 def describe_battery(self): """打印一条描述电瓶容量的消息""" print(f'This car has a {self.battery_size}-KWh battery.') # 实例化对象,名字是特斯拉 my_tesla=ElectricCar('teasla','model s','2019') # 子类调用父类的方法1 print(my_tesla.get_descriptive_name()) # 子类调用子类的方法1 my_tesla.describe_battery()
3;重写父类的方法。
重写父类的方法是在子类里操作的,并不需要回到子类去修改。
意思是在子类里定义个方法其变量名与父类的变量名一致,在调用子类这个方法的时候,父类的方法就不会出现。就不演示了比较容易理解。
以上都是学习类的一些方法,多加练习均可以掌握,学到这里我发现编程里的逻辑思路均是一环扣一环的,嵌套的使用比较多。
还没有评论,来说两句吧...