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

Python报missing 1 required positional argument: 'self'错误如何解决

问题原因分析

你遇到的报错和代码逻辑问题共有两处:

  • 实例化类时没有传入构造函数__init__要求的两个必填位置参数array1和array2:你的构造函数明确要求创建Operation实例时必须传入两个数组参数,但你写的trial= Operation()没有传任何参数,这是触发missing 1 required positional argument: 'self'报错的直接原因。
  • get_functions_names方法存在语法错误:self.dir(Operation)写法错误,dir是Python内置函数,不属于实例的方法,不需要加self.前缀,正确写法是dir(Operation)或者dir(self)。
修复后的可运行代码
import numpy as np
class Operation:
    def __init__(self, array1, array2):
        self.array1 = array1
        self.array2 = array2
        print("Input arrays:", array1, "and", array2)

    def get_functions_names(self):
        # 过滤双下划线开头的魔法方法,只返回自定义的普通方法名称
        listofmethods = [func for func in dir(Operation) if not func.startswith('__')]
        return listofmethods

    def element_wise_addition(self):
        addition_result = self.array1 + self.array2
        return addition_result

# 实例化时传入两个数组参数
trial = Operation(np.array([1,2,3]), np.array([4,5,6]))
print(trial.get_functions_names())
# 输出结果:['element_wise_addition', 'get_functions_names']

如果你的场景允许无参数实例化,可以给构造函数的参数设置默认值,比如修改为def __init__(self, array1=None, array2=None):,此时不传参数也能正常创建实例。

疑问解答
  1. 该报错是否是因为我在类构造函数中定义了两个数组参数导致的?

存在直接关联:你在构造函数中定义了两个必填的位置参数,实例化时没有传入对应参数就会触发该参数缺失报错。

  1. 是否需要单独创建新类来实现该功能?

不需要,当前类内就可以实现获取类内所有函数名称的功能,只需要修正dir函数的调用方式即可,不需要额外创建新类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:00