You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义函数修改Train类的speed整数属性实现列车加减速控制

列车速度控制函数实现方案
  • 首先修正原代码的初始化问题:原__init__方法中self.speed = ()用空元组初始化错误,无法存储数值类型的速度,改为初始值0,对应列车静止的初始状态
  • 你预留的方法可以扩展为三类速度控制接口:直接设置目标速度、增量加速、增量减速,同时增加边界校验避免非法速度值

完整修改后代码

class Train():
    serial_nummer = 2021001
    # 可根据列车类型自定义最高速度限制,此处设为350km/h
    MAX_SPEED = 350

    def __init__(self, type, buildyear):
        self.type = type
        self.buildyear = buildyear
        self.serial_nummer = Train.serial_nummer
        # 修正速度初始化
        self.speed = 0
        Train.serial_nummer += 1

    # 直接设置目标速度的方法,统一做合法性校验
    def set_speed(self, target_speed):
        if target_speed < 0:
            print("速度不能为负数,已自动调整为0")
            self.speed = 0
        elif target_speed > self.MAX_SPEED:
            print(f"速度超过最高限制{self.MAX_SPEED}km/h,已自动调整为最高速度")
            self.speed = self.MAX_SPEED
        else:
            self.speed = target_speed

    # 增量加速方法,传入需要增加的速度值
    def accelerate(self, add_speed):
        if add_speed < 0:
            print("加速值不能为负,减速请调用decelerate方法")
            return
        new_speed = self.speed + add_speed
        self.set_speed(new_speed)

    # 增量减速方法,传入需要减少的速度值
    def decelerate(self, reduce_speed):
        if reduce_speed < 0:
            print("减速值不能为负,加速请调用accelerate方法")
            return
        new_speed = self.speed - reduce_speed
        self.set_speed(new_speed)

    def __str__(self):
        return (f"Train type: {self.type} \nBuildyear: {self.buildyear} \nSerial number: {self.serial_nummer} \nCurrent speed: {self.speed}km/h\n\n")

# 调用示例
train1 = Train('Alfatrain', '2001')
# 直接设置速度为100
train1.set_speed(100)
print(train1)
# 加速50
train1.accelerate(50)
print(train1)
# 减速30
train1.decelerate(30)
print(train1)

如果需要完全禁止用户直接通过train.speed = xxx的方式修改速度,可将speed改为私有属性,搭配@property装饰器实现只读访问,仅允许通过你定义的三个方法修改速度:

class Train():
    # 其余代码不变
    def __init__(self, type, buildyear):
        # 其余初始化逻辑不变
        self._speed = 0
    
    @property
    def speed(self):
        return self._speed
    
    # 三个控制方法里的self.speed全部替换为self._speed即可

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:24:04