【问题标题】:Passing 'self' as an argument in a function call?在函数调用中将“self”作为参数传递?
【发布时间】:2020-05-28 04:26:17
【问题描述】:

在我的 gui 应用程序 (PyQt 5) 中,我有几个代码片段重复出现在不同的模块中。这是一个例子:

save_file = QFileDialog.getSaveFileName(
                                    self,
                                    "Save",
                                    directory="path/to/filename"
                                )
save_path = save_file[0]

我想过为此编写一个这样的函数:

def save_file(obj, title, preset):
    save_file = QFileDialog.getSaveFileName(obj, title, preset)
    save_path = save_file[0]
    return save_path

每当我需要它时(在某个类中),我都会这样称呼它:

save_file(self, "Save testfile", os.path.join(file_path, file_name))

在这种情况下,我必须将self 作为参数传递给我的函数。这个可以吗? 我知道我可以将一个类的实例作为参数传递。 但是在方法中调用函数时直接传递self 是个好主意吗? 我在互联网上找不到太多关于此的内容。

【问题讨论】:

  • 请完成关于调用类方法的教程。

标签: python python-3.x class self


【解决方案1】:

没关系,虽然约定是使用以下格式:

self.save_file("Save testfile", "path/to/filename")

虽然save_file 可能应该在一个类中,并且它的方法定义看起来像:

def save_file(self, title, preset):
    ...

【讨论】:

    【解决方案2】:

    self 通常用于引用this 对象。您目前采用的方法。您没有为完整的答案提供足够的上下文,但您应该阅读 python 类和类方法的使用。这里是a tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-20
      • 2016-08-02
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2012-12-04
      • 2021-12-29
      • 2012-02-07
      相关资源
      最近更新 更多