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

Python访问类属性quality触发AttributeError如何解决

Python运行抛出AttributeError: 'TableHeight' object has no attribute 'quality'修复方案

核心报错信息

AttributeError: 'TableHeight' object has no attribute 'quality'

问题根因

两个基础错误导致报错和逻辑不生效:

  • 类__init__构造方法中,传入的quality参数被错误赋值给了实例属性self.viewquality,整个类根本没有定义名为quality的实例属性,后续所有访问.quality的代码都会触发属性不存在错误
  • 高度不相等场景下写的tableone.quality - 10只是做了临时计算,没有把计算结果赋值回属性,完全不会实现“quality减10”的预期逻辑
  • 分支代码存在冗余:if和else分支里写了完全相同的desirability求和代码,没有必要

预期实现逻辑

  • 调用合并方法处理两个TableHeight实例时,先计算合并后座位数:两个实例座位数总和减2
  • 若两个实例高度不相等,先将第一个实例的quality值减10
  • 两个实例的quality值求和得到desirability
  • 控制台打印最终的座位数和desirability结果

修复后可运行代码

class TableHeight:
    def __init__(self, height, quality):
        self.height = height
        self.quality = quality
        self.seats = 4


one = TableHeight(height=74, quality=60)
two = TableHeight(height=74, quality=80)
three = TableHeight(height=75, quality=75)


def tabletocombine(tableone, tabletwo):
    tableseats = tableone.seats + tabletwo.seats - 2
    
    if tableone.height != tabletwo.height:
        tableone.quality -= 10
    desirability = tableone.quality + tabletwo.quality

    print(tableseats)
    print(desirability)


tabletocombine(one, two)

运行结果说明

调用tabletocombine(one, two)时,两个实例高度都是74,不会触发减10逻辑,最终输出:

6
140

如果传入高度不等的实例比如tabletocombine(one, three),会先把one的quality减10,最终输出:

6
125

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:27:17