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

为何出现AttributeError: 'str'对象没有'color'属性?

问题重现

自定义代码

class city:
    def __init__(self,name,color=None, choise = ['r','g','b']):
        self.name = name
        self.color = color
        self.choise = choise
    def  __repr__(self) -> str:
        return "{} {}".format(self.name,self.color)    

def coloring(S):
        if S.color == None: #this line warning AttributeError
            S.color = S.choise[0]

def Mapcolor(S = city(name = 'a')):
    coloring(S)

报错栈追踪

File "d:\\Thực hành\\Thực hành 1\\exaample.py", line 29, in <module>
    Mapcolor("wa")
  File "d:\\Thực hành\\Thực hành 1\\exaample.py", line 27, in Mapcolor
    coloring(S)
  File "d:\\Thực hành\\Thực hành 1\\exaample.py", line 23, in coloring
    if S.color == None:
AttributeError: 'str' object has no attribute 'color'
错误原因分析

核心问题是参数类型不匹配:

  • 你调用Mapcolor("wa")时,传入的是字符串对象"wa",但coloring函数设计用来处理的是city类的实例。
  • coloring函数里需要访问S.color和S.choise属性,这些属性是你定义的city类独有的,字符串对象根本没有这些属性,所以执行到判断S.color的代码时直接抛出错误。

补充说明:Mapcolor函数的默认参数是city(name='a')(这是符合要求的city实例),但你调用时手动传入了字符串,覆盖了默认参数,才引发了类型不匹配的问题。

如果要给名为"wa"的城市着色,正确的调用方式应该是Mapcolor(city(name="wa")),而不是传入单纯的字符串。

内容的提问来源于stack exchange,提问作者phúc trần công

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:00:47