【问题标题】:missing 1 required positional argument when using self [duplicate]使用 self 时缺少 1 个必需的位置参数 [重复]
【发布时间】:2018-04-29 16:30:35
【问题描述】:

我正在学习 python。我创建了一个包含 2 个方法的类可视化器。现在我想在我的第二个方法中调用第一个方法。我读到我必须使用自我:

def method2(self):
    self.method1()

这行得通。现在我正在添加其他参数:

def method2(self, param1, param2, param3):
    self.method1()

我通过我的main.py 调用它:

xx.method2(param1, param2, param3)

现在我得到一个错误:

missing 1 required positional argument: 'param3'

我检查了,param3 在那里,参数的顺序是一样的。我认为它与self 冲突。

我该如何解决这个问题?我的类中是否需要一个 init 方法?

编辑: 在我的主目录中:

from project.visualizer import Visualizer
vsl = Visualizer

vsl.method2(param1, param2, param3)

【问题讨论】:

  • 确保您调用的是实例的方法而不是类的方法。 Python中也有类方法。
  • 什么是xx?它是您班级的一个实例吗?您需要提供一个竞争示例:类、如何创建类的实例以及如何调用方法。
  • 不,您不需要__init__,但您确实需要创建该类的实例,以便正确调用该方法。

标签: python python-3.x


【解决方案1】:
vsl = Visualizer

这不会像您想要的那样创建Visualizer 的实例。如所写,它导致vsl 指向Visualizer 类,而不是该类的instance。当您致电vs1.method2() 时,就好像您写过:

Visualizer.method2(param1, param2, param3)

应该是:

vsl = Visualizer()

如果Visualizer的构造函数接受参数,则传入。

【讨论】:

    【解决方案2】:

    要调用方法,首先要初始化类。

    x = Visualizer()
    x.method2(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 2023-02-06
      • 1970-01-01
      • 2021-09-15
      • 2013-07-06
      • 2022-01-05
      • 2017-03-28
      相关资源
      最近更新 更多