当前位置: 首页 > 知识库问答 >
问题:

TypeError:method()接受1个位置参数,但给出了2个

商同化
2023-03-14
class MyClass:

    def method(arg):
        print(arg)
my_object = MyClass()
>>> my_object.method("foo")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: method() takes exactly 1 positional argument (2 given)

...为什么Python告诉我我给了它两个参数,而我只给了一个?

共有1个答案

孙化
2023-03-14

在Python中,这:

my_object.method("foo")

...是句法糖,翻译人员在幕后将其翻译成:

MyClass.method(my_object, "foo")

...正如你所看到的,它确实有两个参数--只是从调用者的角度来看,第一个参数是隐式的。

class MyNewClass:

    def method(self, arg):
        print(self)
        print(arg)
>>> my_new_object = MyNewClass()
>>> my_new_object.method("foo")
<__main__.MyNewClass object at 0x29045d0>
foo
class MyOtherClass:

    @staticmethod
    def method(arg):
        print(arg)
>>> my_other_object = MyOtherClass()
>>> my_other_object.method("foo")
foo
 类似资料:
  • 问题内容: 如果我有课… 我这样称呼 …为什么当我只给出一个参数时,Python告诉我给它两个参数? 问题答案: 在Python中,这是: …是语法糖,口译员在后台将其翻译为: …,如你所见,它确实有两个参数-从调用者的角度来看,只是第一个参数是隐式的。 这是因为大多数方法会对被调用的对象进行某些处理,因此需要某种方法在该方法内部引用该对象。按照惯例,第一个参数self在方法定义内调用: 如果你呼

  • 在我的程序中,我主要想返回一个方法的结果,该方法测试两个学生之间的相等性(即,如果两个学生上的课的数量相等) 我创建了一个名为Student的类。然后我创建了两个函数并定义了它们的属性。实际上,我试图比较student类中的两个对象,而一个方法需要检查这两个对象之间的相等性。

  • Tkinter回调跟踪中的异常(最近的调用是最后一次): 文件“C:...\programs\python\python37\lib\tkinter__init__.py”,第1705行,在调用返回self.func(*args)typeError:done()接受1个位置参数,但给出了2个 有谁知道我犯了什么错误,能给我一个例子,如何使它更好和改进吗?

  • 我正在运行一个celery任务,它需要两个参数,如下所示: 和:

  • 函数insert接受对链表中第一个节点的引用、新值和位置,并在列表中的给定位置插入具有给定值的新节点。 函数pop to引用链表中的第一个节点和一个位置,并删除链表中该位置的节点。 函数stringify_linked_list引用链表的第一个节点并返回链表中所有节点的可打印字符串。 到目前为止,我的代码如下。如果你对我如何修复它有任何想法,请让我知道。谢谢!