【Python】实战:请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

 

# 定义汽车基类
class Car:
    def __init__(self, model, license_plate):
        self.model = model  # 车型
        self.license_plate = license_plate  # 车牌

    def start(self):
        print(f"{self.model} ({self.license_plate}) 启动了。")

    def stop(self):
        print(f"{self.model} ({self.license_plate}) 停止了。")

# 定义出租车类
class Taxi(Car):
    def __init__(self, model, license_plate, company):
        super().__init__(model, license_plate)  # 调用父类构造函数
        self.company = company  # 所属出租公司

    def start(self):
        super().start()  # 调用父类的启动方法
        print(
            f"乘客您好\n我是 {self.company}的司机,我的车牌是{self.license_plate},您要去哪里?\n目的地到了,请您付费下车,欢迎您再次乘坐")
'''
乘客您好
我是长城出租车公司的,我的车牌是:京A88888,您要去哪里?
目的地到了,请您付费下车,欢迎再次乘坐
'''



# 定义家用轿车类
class PrivateCar(Car):
    def __init__(self, model, license_plate, owner_name):
        super().__init__(model, license_plate)  # 调用父类构造函数
        self.owner_name = owner_name  # 车主姓名

    def start(self):
        super().start()  # 调用父类的启动方法
        print(f"我是{self.owner_name},我的汽车我做主\n目的地到了,我们去玩吧")

# 测试代码
if __name__ == "__main__":
    # 测试出租车类
    taxi = Taxi("宝马", "京A888888", "长城出租公司")
    taxi.start()  # 启动出租车
    taxi.stop()   # 停止出租车

    # 测试家用轿车类
    private_car = PrivateCar("奔驰", "冀A66666", "武大郎")
    private_car.start()  # 启动家用轿车
    private_car.stop()   # 停止家用轿车

该代码定义了一种汽车模型,通过面向对象的编程方式展示不同类型汽车的行为和特征。

首先,创建了一个名为`Car`的基类,它的构造方法`__init__`接受两个参数:`model`和`license_plate`,分别表示车型和车牌。该类定义了两个方法:`start`和`stop`,分别用于表示汽车启动和停止时的行为,方法中使用了格式化字符串来输出相应的信息。

接下来,定义一个子类`Taxi`,继承自`Car`类。`Taxi`类在其构造函数中除了调用父类的构造函数外,还增加了一个新属性`company`,表示出租车所属的出租公司。`Taxi`类重写了`start`方法,首先调用父类的`start`方法,然后输出出租车司机的相关信息和对乘客的问候。

然后,定义另一个子类`PrivateCar`,同样继承自`Car`类。此类在构造方法中增加了一个新属性`owner_name`,表示车主姓名。与`Taxi`类相似,`PrivateCar`类也重写了`start`方法,在调用父类的`start`方法后,输出车主的相关信息。

在测试代码部分,`if __name__ == "__main__":`确保该部分代码仅在脚本作为主程序执行时被调用。创建了一辆出租车对象`taxi`,并调用`start()`和`stop()`方法,测试其启动和停止的行为。接着,创建一辆家用轿车对象`private_car`,同样调用其`start()`和`stop()`方法,进行类似的测试。

通过这种继承和方法重载的方式,实现了多态性,使得不同类型的汽车在启动时输出不同的行为和信息。这样,使用者可以通过统一接口(`start`和`stop`方法)来操作不同类型的汽车,而实际的行为则取决于具体的汽车类型。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒雒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值