python基础知识:重写父类的方法(结合注释来理解重写父类的方法的常见操作)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/YJG7D314/article/details/102758701
class Car():
    """一次模拟汽车的简单尝试"""
    def __init__(self,make,model,year):#定义一个特别的初始化方法。无需实例的调用就可运行。减少重复代码的使用量
        self.make = make#在该方法里定义属性
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_descriptive_name(self):#定义获得描述的方法
        long_name = str(self.year) + " " +self.make + " " + self.model
        return long_name.title()#返回整洁的描述信息
    def read_odometer(self):#定义读里程表的方法。语法类比函数。
        print("This car has " + str(self.odometer_reading) + "miles on it.")
    def update_odometer(self,mileage):#定义更新里程表里的数值
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")
    def increment_odometer(self,miles):#increment表增加
        self.odometer_reading += miles

    def fill_gas_tank(self):
        print("汽油车专属,电动车走开!自己充电去!")

class ElectricCar(Car):#定义一个名为ElectricCar(电动汽车)的子类,子类,子类!!!父类是Car
    def __init__(self,make,model,year):
        """初始化父类的属性"""
        super().__init__(make,model,year)
        #为帮助Python将父类和子类关联起来,这些实参必不可少。(定义是形参,调用是实参)。类比函数调用,这是子类调用父类的一个操作。
        self.battery_size = 70

    def describe_battery(self):#给子类,子类,子类名为ElectricCar(电动汽车)的子类定义方法escribe_battery
        """打印一条描述电瓶容量的信息"""
        print("This car has a " + str(self.battery_size) + "-kWh battery.")

    def fill_gas_tank(self):#这是重写父类的方法,此时python解释器会无视父类的此方法,只会钟爱子类的此方法。不信看运行结果的最后一条信息。
        """电动汽车没有油箱"""
        """假设Car 类有一个名为fill_gas_tank() 的方法,它对全电动汽车来说毫无意义,因此你可能想重写它。重写方式如下"""
        print("This car doesn't need a gas tank!")
    """多说一句:重写父类的方法,此时python解释器会无视父类的此方法,只会钟爱子类的此方法。不信看运行结果的最后一条信息。"""
my_tesla = ElectricCar("tesla","model s",2016)#创建ElectricCar的一个实例,并将实参("tesla","model s",2016)传递给形参(make,model,year)
print(my_tesla.get_descriptive_name())#通过实例调用方法get_descriptive_name()"""多说一句:子类可以调用父类的所有属性和方法哦"""
my_tesla.describe_battery()#通过实例调用方法get_descriptive_name()
my_tesla.fill_gas_tank()#通过实例调用方法fill_gas_tank()。执行结果证明子类的该方法生效而父类的该方法失效。

#>>>
2016 Tesla Model S
This car has a 70-kWh battery.
This car doesn't need a gas tank!

猜你喜欢

转载自blog.csdn.net/YJG7D314/article/details/102758701