python类的继承,学习

参考书:《Python编程从入门到实践》

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
# Please write your outline & code.
# Please write your outline & code.
class Car:
    '''创建一个有关汽车的类'''

    # 构造函数
    def __init__(self, make: str, model: str, year: int):
        '''
        description:初始化汽车的属性
        param {*} self
        param {str} make 制造商
        param {str} model 型号
        param {int} year 生产年份
        return {*}
        '''

        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 10  # 默认,里程表初始值 = 0
        # print("hello world.") # 子类调用测试

    def get_descriptive_name(self):
        """描述:汽车"""
        long_name = str(self.year) + " " + self.make + " " + self.model
        return long_name.title()

    def read_odometer(self):
        """读取:里程数"""
        show_odometer = "This car has " + str(
            self.odometer_reading) + " miles on it."
        return show_odometer

    def update_odometer(self, mileage=int):
        """更新:里程表数据(mileage 英里数)"""
        # 参考第 93 行,调用这个方法的时候,才写 mileage 参数(调用其他方法,不需填写)
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("Your can't roll back an odometer.")
        return

    def increment_odometer(self, miles=float):
        """新增:里程表数据(miles 英里)"""
        # 参考第 94 行,调用这个方法的时候,才写 miles 参数(调用其他方法,不需填写)
        self.odometer_reading += miles
        # return self.odometer_reading += miles
        return self.odometer_reading


class ElectriCar(Car):
    """电动汽车的独特之处"""

    # 构造函数
    def __init__(self, make, model, year):  # 有冒号
        """初始化:子类的属性"""

        super().__init__(make, model, year)  # 继承 超类/父类,没有冒号
        """继承:超类/父类的属性"""
        # 超类/父类/xx类,就是同一个东西,不一样的叫法

        # 再初始化子类的属性(可按需设置为:可变参数)
        self.battery_size = 70

    def describe_battery(self):
        """打印一条描述电池的信息"""
        print(f"This car has a {self.battery_size}-kwh battery.")


# 实例化 tesla
my_tesla = ElectriCar("tesla", "model s", 2018)
print(my_tesla.get_descriptive_name())

# 调用 子类的属性
print(my_tesla.battery_size)

print("-------------------分割线---------------------")

# 实例化 nio
my_nio = ElectriCar("nio", "et7", 2021)
print(my_nio.read_odometer())

# 调用 子类的属性
print(my_nio.update_odometer(mileage=100))
print(my_nio.increment_odometer(miles=6))

特别提示:

  • 如果在 类.方法() 中已设置 print 输出/return,可直接调用,而不必再写 print
  • 参考如下:
  • 在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值