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

Python自定义Stack类调用apnd方法报missing positional arguments错误排查

错误原因

你遇到的missing 1 positional arguments报错根源是对Python实例方法的调用逻辑理解有误:

  • 类中定义的普通方法默认是实例方法,第一个参数self会在你通过类实例调用方法时,由Python自动传入,指向当前调用方法的实例对象。
  • 你的代码直接通过类本身Stack调用apnd方法,此时Python不会自动绑定self值,你传入的字符串"PYTHON"会被赋值给self形参,方法定义中要求的data形参没有收到传入值,就会触发缺少位置参数的报错。
修正方案

常规使用场景下,你需要先创建Stack类的实例,再通过实例调用入栈方法,修正后的可运行代码如下:

class Stack:
    def __init__(self):
        self.pystack = []
    def apnd(self, data):
        self.pystack.append(data)

# 1. 先创建栈的实例对象
stack_instance = Stack()
# 2. 通过实例调用入栈方法,此时self会自动绑定为stack_instance
stack_instance.apnd("PYTHON")

# 验证入栈结果
print(stack_instance.pystack)  # 输出:['PYTHON']

补充:如果你强行通过类调用实例方法,需要手动把实例作为第一个参数传入,写法为Stack.apnd(stack_instance, "PYTHON"),但这种写法不符合常规编码规范,不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:00:57