Передача «я» в качестве аргумента при вызове функции? - PullRequest
0 голосов
/ 28 мая 2020

В моем приложении 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 напрямую при вызове функции внутри метода? Я не мог найти много об этом на inte rnet.

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

self обычно используется для ссылки на объект this. Тот, в чьем методе вы сейчас находитесь. Вы не дали достаточно контекста для полного ответа, но вы должны прочитать о python классах и использовании методов класса. Вот учебник .

0 голосов
/ 28 мая 2020

Это нормально, хотя по соглашению используется следующий формат:

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

Хотя save_file, вероятно, должен находиться внутри класса, а определение его метода выглядит так:

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