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

调用WordFamily.check_type触发AttributeError:类无words属性

问题分析与解决

错误原因

调用check_type时触发AttributeError: type object 'WordFamily' has no attribute 'words',核心问题有两个:

  • words和suffixes是实例属性(通过self.在__init__中定义),不是类属性,直接用WordFamily.words访问必然找不到。
  • check_type方法既不是实例方法(缺少self参数)也不是类方法(缺少cls参数),调用方式错误,同时原代码逻辑也无法返回期望的"verb"。

修正方案

要实现返回"verb"的需求,同时解决属性访问错误,调整后的代码如下:

修正后的类定义

class WordFamily:
    def __init__(self, name, words, suffixes):
        self.name = name  # 新增词族名称属性,用于返回结果
        self.words = words
        self.suffixes = suffixes
    
    def check_type(self, word):
        # 遍历词族中的每个词
        for w in self.words:
            if word == w:
                return self.name
            # 遍历后缀,判断带后缀的词是否匹配
            for suffix in self.suffixes:
                if word + suffix == w:
                    return self.name
        return None  # 未匹配时返回None

创建实例并调用方法

verb = ["love", "hate"]
# 创建词族实例,传入名称"verb"
verb_family = WordFamily("verb", verb, [""])
# 调用实例方法,得到期望结果
print(verb_family.check_type("love"))  # 输出: verb

关键修正点

  1. 属性访问修正:将WordFamily.words改为self.words,通过实例访问属性,避免类属性不存在的错误。
  2. 方法类型修正:把check_type改为实例方法,添加self参数,确保能访问实例的所有属性。
  3. 返回逻辑修正:新增name属性存储词族名称(如"verb"),满足返回指定结果的需求。
  4. 后缀判断修正:原代码中字符串直接加列表会报错,改为遍历每个后缀逐一判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:45:31