参考书:《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
- 参考如下: