“TypeError:method() 需要 1 个位置参数,但给出了 2 个位置参数”,仅传递了一个参数
遇到错误“TypeError”时: method() 需要 1 个位置参数,但给出了 2 个”尽管只传递了一个参数,但理解 Python 的方法调用很重要约定。
在 Python 中,方法调用是更详细语法的语法糖。当调用对象上的方法时,语言会将调用转换为更明确的形式,其中对象成为方法的第一个参数。
例如,以下调用:
my_object.method("foo")
在幕后被翻译成:
MyClass.method(my_object, "foo")
这里,第一个参数(my_object)在方法定义中被称为 self 参数。此参数表示调用该方法的对象。
在大多数情况下,方法需要访问它们所调用的对象。但有时,您可能需要一个不依赖于它所绑定的对象的方法。在这种情况下,你可以使用 Python 的 staticmethod() 函数来修饰方法:
class MyOtherClass: @staticmethod def method(arg): print(arg)
用 staticmethod() 修饰方法就不需要 self 参数,可以直接调用方法而无需引用对象:
my_other_object.method("foo")
这澄清了为什么您遇到的错误表明提供了两个参数。 Python 将您调用方法的对象(例如原始示例中的 my_object)解释为隐式第一个参数,从而导致总共传递两个参数。
以上是为什么即使有一个显式参数也会出现'TypeError: method()takes 1positional argument but 2 were given 2”?的详细内容。更多信息请关注PHP中文网其他相关文章!