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

使用类开发网络时addUser函数报'str'无getUserName属性如何解决

报错原因排查与修复方案

你遇到的'str' object has no attribute 'getUserName'报错,核心原因是代码中对字符串类型错误调用了仅User类实例才有的getUserName()方法,具体问题如下:

  • 变量命名冲突+逻辑错位:addUser方法的入参名和类成员属性self.users重名,调用addUser时你传入的是字符串类型的新用户名,代码中误对这个字符串入参调用getUserName(),直接触发报错。
  • 校验逻辑完全写反:原本要实现的「遍历已存用户列表、校验新用户名是否重复」的逻辑,被写成了遍历入参、和入参本身的返回值比对,完全达不到校验效果。
  • 用户实例创建逻辑缺失:新增用户时仅传入了user_id,没有把新用户名存入User实例,后续就算添加成功也无法正常获取用户名做校验。

修正后代码

# 修改方法入参为明确的新用户名参数new_username
def addUser(self, new_username):
    """ Adds a user to be included in the users list by the append method """
    # 遍历类本身存储的已存在用户列表self.users做重复校验
    for exist_user in self.users:
        if new_username == exist_user.getUserName():
            print("Sorry, that name is taken. Try again.")
            return
    # 创建User实例时同步传入id和用户名,需保证User类构造函数支持接收用户名参数
    user_id = len(self.users)
    self.users.append(User(user_id, new_username))

如果你的User类原来的构造函数没有接收用户名的逻辑,同步修改__init__方法存储用户名属性即可。

内容的提问来源于stack exchange,提问作者Victoria Sanchez-Apellaniz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:00