首页 > 后端开发 > Python教程 > 为什么我的 Python 方法显示'类型错误:method() 需要 1 个位置参数,但给出了 2 个”?

为什么我的 Python 方法显示'类型错误:method() 需要 1 个位置参数,但给出了 2 个”?

Susan Sarandon
发布: 2024-12-13 15:27:10
原创
542 人浏览过

Why Does My Python Method Show

理解神秘的“Method Takes 1 Argument But 2 Give”错误

尝试在 Python 中调用方法时,开发人员可能会遇到令人困惑的错误消息“TypeError” : method() 需要 1 个位置参数,但给出了 2 个。”这个错误可能会令人费解,特别是当只有一个参数传递给方法时。

在幕后,Python 将方法调用解释为:

class_name.method(object, argument)
登录后复制

这是一种允许方法的机制毫不费力地处理他们正在作用的对象。在方法定义中,第一个参数通常命名为 self,它指的是对象实例。

考虑以下示例:

class MyClass:
    def method(self, arg):
        print(self)
        print(arg)

my_object = MyClass()
my_object.method("foo")
登录后复制

执行时,上面的代码会翻译为:

MyClass.method(my_object, "foo")
登录后复制

这解释了为什么该方法需要两个参数,尽管只显式传递了一个参数caller.

为了缓解这种混乱,开发人员可以在不需要访问其绑定对象的方法上使用 staticmethod() 装饰器。这样,该方法的行为将像常规函数一样,消除了对 self 参数的需要:

class MyOtherClass:
    @staticmethod
    def method(arg):
        print(arg)

my_other_object = MyOtherClass()
my_other_object.method("foo")
登录后复制

总之,当遇到“Method Takes 1 Argument But 2 Give”错误时,请记住在Python中,方法通常会接收一个附加的隐式参数,这是它们关联的对象。仔细考虑这种行为并在必要时使用装饰器可以防止混乱并简化您的代码。

以上是为什么我的 Python 方法显示'类型错误:method() 需要 1 个位置参数,但给出了 2 个”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板