MST

星途 面试题库

面试题:Python Car类的继承与多态应用

基于上述的Car类,设计一个ElectricCar子类继承自Car类,新增属性电池容量(battery_capacity),并重写启动方法,在启动时除了打印'电动汽车已启动',还打印电池容量信息。同时,再设计一个GasolineCar子类,新增属性油箱容量(fuel_tank_capacity),并重写停止方法,停止时除了打印'汽油汽车已停止',还打印油箱剩余油量(假设初始油量为油箱容量的一半)。请写出完整代码及如何测试这些类的多态性。
38.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
class Car:
    def start(self):
        print('汽车已启动')

    def stop(self):
        print('汽车已停止')


class ElectricCar(Car):
    def __init__(self, battery_capacity):
        self.battery_capacity = battery_capacity

    def start(self):
        print(f'电动汽车已启动,电池容量为:{self.battery_capacity}')


class GasolineCar(Car):
    def __init__(self, fuel_tank_capacity):
        self.fuel_tank_capacity = fuel_tank_capacity

    def stop(self):
        remaining_fuel = self.fuel_tank_capacity / 2
        print(f'汽油汽车已停止,油箱剩余油量为:{remaining_fuel}')


# 测试多态性
cars = [ElectricCar(50), GasolineCar(40)]
for car in cars:
    if isinstance(car, ElectricCar):
        car.start()
    elif isinstance(car, GasolineCar):
        car.stop()
  1. 代码说明
    • 首先定义了基类Car,包含startstop方法。
    • ElectricCar子类继承自Car类,新增了battery_capacity属性,并在构造函数__init__中初始化。重写了start方法,在打印启动信息时也打印电池容量。
    • GasolineCar子类同样继承自Car类,新增fuel_tank_capacity属性并在构造函数中初始化。重写了stop方法,在打印停止信息时打印油箱剩余油量(初始假设为油箱容量的一半)。
  2. 多态性测试
    • 创建了一个列表cars,包含一个ElectricCar实例和一个GasolineCar实例。
    • 通过isinstance判断列表中的实例类型,然后调用相应子类重写后的方法,以此展示多态性。