MagicforestA 2022-07-12 19:28 采纳率: 100%
浏览 62
已结题

Composition 和 Inheritance

"""
这段代码是检查汽车是否启动,其中pump method好像不起作用,要让pressure>0,车子才能启动,应该怎么修改
"""
class Car:
    def __init__(self,VIN,engine,tires):
        self.VIN=VIN
        self.engine=engine
        self.tires=tires
class Tires:
    def __init__(self,size):
        self.size=size
        self.pressure=0
    def get_pressure(self):
        return self.pressure
    def pump(self,psi):
        self.pressure=psi
class Engine:
    def __init__(self,fuel_type):
        self.fuel_type=fuel_type
        self.state='off'
    def start(self):
        self.state = 'on'
    def stop(self):
        self.state = 'off'
    def get_state(self):
        return self.state
city_tires=Tires(15)
off_road_tires=Tires(18)
electric_engine=Engine('electric')
petrol_engine=Engine('petrol')
city_car=Car('111A',electric_engine,city_tires)
all_terrain_car=Car('888S',petrol_engine,off_road_tires)
        
print('All-terrain car engine is', all_terrain_car.engine.get_state())
all_terrain_car.tires.pump(10)
 

all_terrain_car.engine.start()
print('All-terrain car engine is', all_terrain_car.engine.get_state())

all_terrain_car.engine.stop()
print('All-terrain car engine is', all_terrain_car.engine.get_state())

all_terrain_car.engine.start()
print('All-terrain car engine is', all_terrain_car.engine.get_state())
print(all_terrain_car.tires.get_pressure()) 

print('City car engine is', city_car.engine.get_state())

city_car.engine.start()
print('City car engine is', city_car.engine.get_state())

city_car.engine.stop()
print('City car engine is', city_car.engine.get_state())

  • 写回答

5条回答 默认 最新

  • CSDN专家-showbo 2022-07-12 21:31
    关注
    class Car:
        def __init__(self,VIN,engine,tires):
            self.VIN=VIN
            self.engine=engine
            self.tires=tires
            self.engine.tires=tires#动态给这辆车的引擎添加关联的轮胎,因为要判断胎压,需要在引擎中检查胎压,建立联系
    class Tires:
        def __init__(self,size):
            self.size=size
            self.pressure=0
        def get_pressure(self):
            return self.pressure
        def pump(self,psi):
            self.pressure=psi
    class Engine:
        def __init__(self,fuel_type):
            self.fuel_type=fuel_type
            self.state='off'
        def start(self):
            if self.tires.pressure>0:#这里获取动态添加的引擎关联的轮胎胎压进行判断
                self.state = 'on'
        def stop(self):
            self.state = 'off'
        def get_state(self):
            return self.state
    city_tires=Tires(15)
    off_road_tires=Tires(18)
    
    electric_engine=Engine('electric')
    petrol_engine=Engine('petrol')
    
    city_car=Car('111A',electric_engine,city_tires)
    all_terrain_car=Car('888S',petrol_engine,off_road_tires)
            
    print('All-terrain car engine is', all_terrain_car.engine.get_state())
    all_terrain_car.tires.pump(10)
     
     
    all_terrain_car.engine.start()
    print('All-terrain car engine is', all_terrain_car.engine.get_state())
     
    all_terrain_car.engine.stop()
    print('All-terrain car engine is', all_terrain_car.engine.get_state())
     
    all_terrain_car.engine.start()
    print('All-terrain car engine is', all_terrain_car.engine.get_state())
    print(all_terrain_car.tires.get_pressure()) 
     
    print('City car engine is', city_car.engine.get_state())
     
    city_car.engine.start()
    print('City car engine is', city_car.engine.get_state())
     
    city_car.engine.stop()
    print('City car engine is', city_car.engine.get_state())
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用