class Car(): '''一次模拟汽车的简单尝试''' def __init__(self,make,model,year): '''初始化描述汽车的属性:制造商、型号、生产年份''' self.make = make self.model = model self.year = year self.odometer_reading = 24 #里程表读数 def update_odometer(self,mileage): #修改属性值 '''将里程表读数设置为指定的值''' self.odometer_reading += mileage def get_descriptive_name(self): '''返回整洁的描述信息''' long_name = str(self.year) + ' ' + self.make + ' ' + self.model return long_name.title() def read_odometer(self): '''打印一条指出汽车里程的信息''' print('这辆车的汽车里程是: ' + str(self.odometer_reading)) def fill_gas_tank(self): '''汽车油箱''' print('汽车有油箱') #-------------------------------------------------------------------- class ElectricCar(Car): '''电动车的独特之处''' def __init__(self,make,model,year): '''初始化父类属性''' super().__init__(make,model,year) self.battery_size = 70 #添加一个电动车特有的属性:电瓶,以及电瓶容量 def describe_battery(self): '''打印一条描述电瓶容量的信息''' print('这辆电动车有: ' + str(self.battery_size) + ' 的电瓶容量') def fill_gas_tank(self): #重写父类的方法 '''电动车有电瓶''' print('汽车有电瓶') my_tesla = ElectricCar('特斯拉','model s ',2016) print(my_tesla.get_descriptive_name()) #------------------------------------------------------- my_tesla.read_odometer() my_tesla.describe_battery() #------------------------------------------------- my_tesla.battery_size = 100 my_tesla.describe_battery() my_tesla.fill_gas_tank() #实例,调用被重写的此方法 ========================================================================================= 执行结果: 2016 特斯拉 Model S 这辆车的汽车里程是: 24 这辆电动车有: 70 的电瓶容量 这辆电动车有: 100 的电瓶容量 汽车有电瓶 ========================================================================================== 对于父类的方法,只要它不符合子类模拟的实物行为,都可以对其进行重写。 为此,可以在子类中定义一个与要重写的父类方法同名,这样python将不会考虑这个父类方法, 而只关注你在子类中定义的相应的方法。