Python 面向对象继承

1.子类继承

main.py

import car
if __name__ == '__main__':


    my_car = car.Car('audi','a4',2016)
    print(my_car.get_descriptive_name())
    my_car.update_year(8888)
    print(my_car.get_descriptive_name())

    my_tesla = car.ElectricCar('tesla','model s',2017)
    print(my_tesla.get_descriptive_name())
    my_tesla.update_year(2020)
    print(my_tesla.get_descriptive_name())

car.py

#父类
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

    def update_year(self,year):
        self.year = year
        
#子类
class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)


1、父类必须包含在当前文件中,且位于子类前面。
2、定义子类时,必须在括号内指明父类的名称。子类中方法 def __init__() 接受创建Car实例所需的信息。
3、 super() 是一个特殊函数,调用父类方法的__init__(),让ElectricCar实例包含父类的所有属性。

2. 给子类定义属性和方法

car.py

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

    def update_year(self,year):
        self.year = year
class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        # 定义电动汽车属性----电池
        self.battery = 70
    def describe_battery(self):
        print("This Car has a "+str(self.battery)+" kWh battery")







在这里插入图片描述

3. 将实例用作属性

main.py

import car
if __name__ == '__main__':


    my_tesla = car.ElectricCar('tesla','model s',2017)
    print(my_tesla.get_descriptive_name())
    my_tesla.update_year(2020)


    print(my_tesla.get_descriptive_name())
    
    """下面这句是属性"""
    my_tesla.battery.describe_battery()

Car.py

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

    def update_year(self,year):
        self.year = year


class Battery():
    def __init__(self,battery_size = 70):
        self.battery_size = battery_size

    def describe_battery(self):
        print("This car has "+str(self.battery_size)+" -kWh battery")


class ElectricCar(Car):
    def __init__(self, make, model, year):
        super().__init__(make, model, year)
        # 定义电动汽车属性----电池
        self.battery = Battery()



在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值