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

Python中这段面向对象编程代码运行失败,如何修复?

问题修复:Python类中实例属性与方法同名导致的TypeError错误

原代码

class Bike:
    def __init__(self, speed):
        self.speed = speed

    def speed(self):
        if (self.speed) > 120:
            print("You are driving fast.")
        else:
            print("You are diving safely.")


bike1 = Bike(32)
bike1.speed()

报错信息

Traceback (most recent call last):
File "C:\Users\Syed\PycharmProjects\Muneer Python\Python Beginner Mosh\App.py", line 10, in
bike1.speed()
TypeError: 'int' object is not callable

错误原因

核心问题是实例属性与方法同名:

  • 在__init__方法中,你给实例绑定了名为speed的整数属性(self.speed = speed)。
  • 同时定义了同名的speed方法,实例创建后,属性会覆盖掉同名方法,导致调用bike1.speed()时,实际是在尝试调用一个整数,因此抛出TypeError。

修复方案

方案一:修改方法名

将speed方法重命名为不冲突的名称,比如check_speed:

class Bike:
    def __init__(self, speed):
        self.speed = speed

    def check_speed(self):
        if self.speed > 120:
            print("You are driving fast.")
        else:
            print("You are driving safely.")  # 修正原代码拼写错误:diving → driving


bike1 = Bike(32)
bike1.check_speed()

方案二:修改属性名

将实例属性名改为其他名称,比如_speed,保留方法名为speed:

class Bike:
    def __init__(self, speed):
        self._speed = speed  # 修改属性名避免冲突

    def speed(self):
        if self._speed > 120:
            print("You are driving fast.")
        else:
            print("You are driving safely.")  # 修正原代码拼写错误:diving → driving


bike1 = Bike(32)
bike1.speed()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:20:30