类——重写

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将不会考虑这个父类方法,


而只关注你在子类中定义的相应的方法。
posted @ 2019-12-18 18:15  小白龙白龙马  阅读(228)  评论(0编辑  收藏  举报