尝试在 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中文网其他相关文章!