Форум сайта python.su
(не уверен, что правильно назвал тему )
есть экземпляр класса (диалогового окна ), созданный командой
inputDialog = employ_request_wind()
в частности в данном случае команда
print('inputDialog:', type(inputDialog), inputDialog)
выведет:
inputDialog:
<class ‘__main__.employ_request_wind’>
<__main__.employ_request_wind(0x1cf6f53c8b0, name=“Dialog”) at 0x000001CF6CE41C80>
нужно создать ссылку на виджет одного поля, содержащего в данном классе окна
например - поле employ
синтаксически (“ручной код ”) будет просто через точку
inputDialog.employ
тогда
print('inputDialog.employ: ‘, type(inputDialog.employ), inputDialog.employ)
inputDialog1.employ:
<class ’PySide6.QtWidgets.QComboBox'>
<PySide6.QtWidgets.QComboBox(0x1cf6f53bff0, name=“employ”) at 0x000001CF6CE7A600>
как построить программно это выражение , когда поле содержится переменной?
т.е.
если руками, то inputDialog.employ
а как это сделать через переменную ?
если экземпляр класса в inputDialog , а поле в переменной field = ‘employ’ - > как написать выражение, чтобы результат был аналогичным записи inputDialog.employ ?
Офлайн
Не нужно делать таких вещей, это ведёт к сильной связанности между частями программы. Но ты же всё равно не будешь меня слушать и продолжишь заниматься глупостями, по этому вот так:
var = "employ" employ = getattr(inputDialog, var)
Онлайн
спасибо, попробую!
насчет глупостей - не спорю, этот способ взял из учебных примеров, там такого много мусолится ..
не дадите ссылку на примеры, где есть более традиционное решение ?
Офлайн
Нужно не смотреть примеры, а изучать ООП и практиковаться. Без этого нормальным разработчиков мне стать. Почитай книгу Грэди Буч “Объектно-ориентированный анализ и проектирование с примерами приложений” она наиболее адекватна. Там примеры на C++ на это внимание не обращай тебе они не нужны.
Онлайн
неожиданный совет, думал, что эту книгу давно можно выбросить
Офлайн
Вот когда ООП устареет, тогда и можно будет её выбросить. А сейчас она более чем актуальна.
Онлайн
xkeinУ него книжки не для новичков. Если ты опытный, то читаешь его. Мышление нужно иметь уже к началу чтения, понимать, что SOLID и GoF-шаблоны погоды не делают. Также UML не поможет, так как нужно понимать, что это не просто набор простых картинок. То есть за всем этим что-то стоит, и нужно понимать этот бэкграунд. А как узнать бэкграунд? Нужно пропрограммировать несколько лет и прочувствовать на себе все проблемы.Rodegastнеожиданный совет, думал, что эту книгу давно можно выбросить
Почитай книгу Грэди Буч
Отредактировано py.user.next (Июнь 10, 2025 06:47:43)
Офлайн
> У него книжки не для новичков
Если книга для новичков это комикс с картинками, то да, там их недостаточно. А в остальном книга вполне подходит для новичка.
> Так вот, затрагивая поле, ты нарушаешь инкапсуляцию
Причём тут инкапсуляция? Это значит что у него внятного интерфейса нет.
Онлайн
RodegastНе в картинках дело. Дело в том, какой мозг нужен, чтобы её понять. Для новичка эта книжка будет казаться морем воды какой-то бессмысленной.
Если книга для новичков это комикс с картинками, то да, там их недостаточно.
RodegastОн лезет во внутренности объекта. Значит, он не знает про инкапсуляцию. Просто не знает о таком понятии даже.
Причём тут инкапсуляция? Это значит что у него внятного интерфейса нет.
Отредактировано py.user.next (Июнь 10, 2025 17:45:04)
Офлайн
> Дело в том, какой мозг нужен, чтобы её понять.
Не думаю. Книга достаточно понятная и UML-а там практически нет.
Онлайн