Python报错TypeError: __init__()缺少必填参数'privileges'如何调试?
错误原因
你遇到的报错是参数不匹配导致的,核心问题如下:
Admin类的构造方法__init__定义了5个必填位置参数,按顺序为:first_name、last_name、email、username、privileges- 实例化
Admin对象时你仅传入了4个参数,漏掉了username参数,你写的privs被系统识别为第四个参数username的取值,导致第五个参数privileges没有对应传值,触发类型错误。
修复方法
补全实例化时缺失的username参数即可,示例如下:
privs = ['can add post', 'can delete post', 'can ban user'] # 第四个参数填入实际用户名,这里示例为pgold gold = Admin('Peter', 'Gold', 'pgold@collin.edu', 'pgold', privs)
如果想要避免参数顺序错乱导致的同类问题,也可以用关键字参数传值:
gold = Admin( first_name='Peter', last_name='Gold', email='pgold@collin.edu', username='pgold', privileges=privs )
同类报错通用排查思路
- 遇到
missing 1 required positional argument类错误时,首先核对报错的类/方法的参数定义,统计必填位置参数的数量 - 再核对调用时传入的参数数量、顺序,确保和定义一一对应
- 复杂参数场景优先用关键字参数传值,降低匹配错误概率
内容的提问来源于stack exchange,提问作者TeeToe
相关产品推荐
相关产品推荐

