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

调用update_user()报参数错误:仅接受1个位置参数却传入2个,附相关代码截图

报错原因及解决方案

报错update_user() takes 1 positional argument but 2 were given的核心是:你调用update_user函数时传入的位置参数数量,超出了函数定义时约定的接收数量。

常见产生原因

  • 如果update_user是写在类内部的方法:函数定义没有加第一个形参self,也没有加@staticmethod装饰器。此时用类实例调用该方法时,Python会自动将实例对象作为第一个参数传入,叠加你主动传入的1个参数,总传参量就变成2个,和函数定义的1个形参不匹配。
  • 如果update_user是独立函数:函数定义的形参数量少于你调用时传入的参数数量,比如你定义时只留了1个接收数据的形参,调用时同时传了用户ID和更新数据两个参数。

排查步骤

  1. 打开services/user.py文件,找到update_user的定义代码,统计它的位置形参数量。
  2. 打开views/user.py文件,找到你调用update_user的代码行,统计你主动传入的位置参数数量。
  3. 对比两处的参数数量,如果是类内方法,需要额外确认是否有self形参或者@staticmethod装饰器。

解决方法

类内方法场景

如果是类内定义的方法,两种修改方案二选一:

  1. 补充self形参
class UserService:
    # 补充self作为第一个形参
    def update_user(self, data):
        # 原有业务逻辑
  1. 增加静态方法装饰器
class UserService:
    # 加静态方法装饰器,不会自动传入实例参数
    @staticmethod
    def update_user(data):
        # 原有业务逻辑

独立函数场景

如果是独立函数,直接修改函数定义的形参列表,和调用时传入的参数数量匹配即可,比如:

# 调用时传了user_id和data两个参数,定义时对应加两个形参
def update_user(user_id, data):
    # 原有业务逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:15:04