Что-то не так с очень большим __init __?

Я пишу программу на Python с графическим интерфейсом, созданным с помощью модуля Tkinter. Я использую класс для определения графического интерфейса, поскольку он упрощает передачу команд кнопкам и упрощает понимание всего этого.

Фактическая инициализация моего графического интерфейса занимает около 150 строк кода. Чтобы упростить понимание, я написал функцию __ init __ следующим образом:

def __init__(self, root):
    self.root = root
    self._init_menu()
    self._init_connectbar()
    self._init_usertree()
    self._init_remotetree()
    self._init_bottom()

где _init_menu () , _init_connectbar () , и так далее делают всю работу по инициализации. Это упрощает отслеживание моего кода и не позволяет __ init __ становиться слишком большим.

Однако это создает проблемы с областью видимости. Поскольку виджет Entry, который я определил в _init_connectbar () , находится в области действия функции и не является атрибутом класса, я не могу ссылаться на него в других методах этого класса.

Я могу сделать это проблемы уйдут, выполнив большую часть инициализации в __ init __ , но я потеряю абстракцию, полученную с помощью моего первого метода.

Следует ли мне расширить __ init __ или найти другой способ чтобы поместить виджеты в область действия класса?

5
задан Rafe Kettler 19 September 2010 в 15:30
поделиться