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

Python类方法中无法调用实例属性问题咨询:如何用maxSpeed修改velocity?

问题原因与解决方法

原因

  1. 未通过self访问实例属性:Python类的实例方法中,必须通过self关键字才能访问当前实例的属性。你在run方法中直接写maxSpeed,Python会将其视为局部变量或全局变量,而非Car实例的maxSpeed属性,因此会抛出变量未定义的错误。
  2. 冗余参数:run和stop方法定义了velocity参数,但实际逻辑中并未使用该参数,属于无效参数。
  3. 默认打印无意义:直接print(car1)会输出对象的内存地址,无法直观看到实例属性信息。

解决方法

修复后的代码如下:

class Car:
    def __init__(self, brand, model, year, maxSpeed, velocity, colour, plates):
        self.brand = brand
        self.model = model
        self.year = year
        self.maxSpeed = maxSpeed
        self.velocity = velocity
        self.colour = colour
        self.plates = plates

    def setColour(self, colour):
        self.colour = colour

    def run(self):
        # 通过self访问实例的maxSpeed属性
        self.velocity = self.maxSpeed * 0.75

    def stop(self):
        self.velocity = 0

    # 重写__str__方法,实现可读的实例打印
    def __str__(self):
        return f"Car(品牌={self.brand}, 型号={self.model}, 年份={self.year}, 最高时速={self.maxSpeed}, 当前速度={self.velocity}, 颜色={self.colour}, 车牌={self.plates})"

car1 = Car("BMW","M5",2023,250, 0, "blue","23442JK")
car1.run()
print(car1)

关键修改点

  • 在run方法中使用self.maxSpeed访问实例的最高时速属性,确保能正确读取到初始化时传入的maxSpeed值。
  • 移除run和stop方法中未使用的velocity参数,精简方法定义。
  • 添加__str__方法,自定义实例的打印内容,方便查看当前速度等属性的变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:42:33