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

Python运行代码报AttributeError: 'Car'对象无'manufacturer'属性问题排查

错误原因
  • 核心触发原因:你在get_descriptive_name方法中调用了不存在的实例属性self.manufacturer。类初始化方法__init__中仅定义了make、model、year三个实例属性,你传入的品牌参数'audi'被赋值给了self.make,和你调用的属性名不匹配。
  • 潜在隐藏问题:你贴出的代码中构造方法被错误标注(缺少前后双下划线、被HTML标签污染),如果你的本地代码也没有写对__init__前后的双下划线,会导致初始化逻辑完全不生效,就算属性名对了也会报错。
修复方案

二选一执行即可,核心是保证属性名在初始化和调用处前后统一:

方案1:修改方法内调用的属性名,和初始化逻辑保持一致

把get_descriptive_name里的self.manufacturer改成self.make,修正后完整代码如下:

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_descriptive_name(self):
        # Return a neatly formatted descriptive name.
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())

运行后输出结果为:2019 Audi A4

方案2:修改初始化逻辑的属性名,和方法调用保持一致

把初始化里的self.make改成self.manufacturer,同时对应调整构造方法参数名,修正后代码如下:

class Car:
    def __init__(self, manufacturer, model, year):
        self.manufacturer = manufacturer
        self.model = model
        self.year = year

    def get_descriptive_name(self):
        # Return a neatly formatted descriptive name.
        long_name = f"{self.year} {self.manufacturer} {self.model}"
        return long_name.title()

my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 21:03:03