Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Функция в классе python требует параметр self

YarinMinecraft YT Ученик (162), на голосовании 2 недели назад
У меня есть класс:
 class CustomDialog: 

def gen(self, title, text, typee: Literal["YESNO", "YES", "NO"], page):
if typee == "YESNO":
print("YESNO")
dial = ft.AlertDialog(
title=ft.Text(title),
content=ft.Text(text),
actions = [
ft.TextButton("OK", on_click=lambda _: page.close(dial))
]
)
return dial
И почему-то когда я пытаюсь вызвать функцию gen она требует у меня параметр self
Голосование за лучший ответ
Bezdarnost42 Гуру (2985) 1 месяц назад
В Python, когда вы определяете метод внутри класса, первым параметром всегда должен быть self. Этот параметр представляет собой ссылку на экземпляр класса, с которым метод был вызван. Это позволяет методу получать доступ к атрибутам и другим методам этого экземпляра.
Ваш класс CustomDialog должен выглядеть так:
class CustomDialog:
def gen(self, title, text, typee: Literal["YESNO", "YES", "NO"], page):
if typee == "YESNO":
print("YESNO")
dial = ft.AlertDialog(
title=ft.Text(title),
content=ft.Text(text),
actions=[
ft.TextButton("OK", on_click=lambda _: page.close(dial))
]
)
return dial

Когда вы вызываете метод gen, вы должны делать это через экземпляр класса:
dialog = CustomDialog()
dialog.gen("Title", "Text", "YESNO", page)

Таким образом, параметр self будет автоматически передан интерпретатором Python.
YarinMinecraft YTУченик (162) 1 месяц назад
Спасибо, помогло
Bezdarnost42 Гуру (2985) YarinMinecraft YT, рад что вам помог, удачи в изучении Python ?
YarinMinecraft YTУченик (162) 1 месяц назад
Кстати, этот класс - это класс для упрощения работы с AlertDialog в Flet для моей проги в 400 строк. Не, я не шучу она рил в 400 строк сейчас
Bezdarnost42 Гуру (2985) YarinMinecraft YT, 400 строк это уже внушительный код, особенно для упрощения читаемости кода alert’a в flet
YarinMinecraft YTУченик (162) 1 месяц назад
Я пишу тест по знанию компа для чайников
YarinMinecraft YTУченик (162) 1 месяц назад
И решил сделать класс который будет упрощать работу с AlertDialog для себя
Похожие вопросы