|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
||||||
Использование переменной между классами08.06.2021, 16:10. Показов 3480. Ответов 11
Здравствуйте. Такой вопрос. У меня есть переменная light в классе Randomize_light, которая используется в методе random_light. Данная переменная отвечает за генерацию рандомного числа для освещения, а метод уже реализует саму генерацию, не суть. У меня так же есть класс для генерации масок Maskss, там при генерации маски меняется цвет фона и цвет освещения, но чтобы вернуться к исходному освещению мне нужно задать параметр light из класса Randomize_light. Как это можно реализовать?
Фрагмент кода: По нажатию кнопки "Генерировать освещение" у меня получается какой-то рандомный оттенок освещения, полученный переменной light из списка color_light. По нажатию кнопки Mask при определенном условии ( там так же есть галка, если стоит, то генерируется маска ( маска - некое изображение, с определенными параметрами освещения ), если нет, то будет обычное освещение ( параметры такого освещения записаны в переменную light ) ) у меня генерируется маска. Если я сгенерирую маску, а потом уберу галку и нажму еще раз сгенерировать, то освещение остается прежним, т.к. сохранился предыдущий параметр, мне же надо чтобы туда записывался параметр из переменной light. После запуска программы по данному коду ошибок не возникает, ошибка возникает после нажатия кнопки Mask NameError: name 'light' is not defined, то есть не определена переменная light. Пробовал ее делать глобальной, может не правильно это сделал, пробовал через self как-то, может тоже не правильно сделал, в общем уже много чего попробовал чтобы эту переменную light = random.choice(color_list) из class Randomize_light(Operator): перетащить как переменную light в class Maskss(Operator):. Можешь ее как-то можно присвоить через новую переменную, например задать переменную light1 = light в классе Maskss, в общем нужна помощь. [...] - пропущенный код, который не имеет значения. Так же тут естественно не весь код, только фрагмент, там весь код на много строк, надеюсь весь не нужно выкладывать. Если для решения задачи требуется весь код, я выложу весь. Если где-то что-то не так в терминологии или вообще в коде даже, извиняюсь заранее, я в этом новичок, без ошибок тут никак, по всем вопросам критику принимаю)
0
|
||||||
| 08.06.2021, 16:10 | |
|
Ответы с готовыми решениями:
11
Передача функции между классами Использование Connection между классами |
|
Автоматизируй это!
|
||
| 08.06.2021, 16:21 | ||
|
mcratveller, ну так сделай лайт атрибутом и запрашивай его.
Добавлено через 1 минуту И подумай нельзя ли это вообще сделать отдельной независимой функцией?
0
|
||
|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
||
| 08.06.2021, 17:53 [ТС] | ||
|
А как обратиться к ней в коде программы потом в классе Maskss? Я просто пошарил в интернете все, я только учусь, попробовал некоторые варианты, не получилось.
0
|
||
|
Автоматизируй это!
|
||||||
| 08.06.2021, 18:04 | ||||||
|
mcratveller, нужно было просто с книги начинать, а не шарить в интернете, тысячелетиями это работало.
вот пример
0
|
||||||
|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
||||||||||||
| 08.06.2021, 19:19 [ТС] | ||||||||||||
Traceback (most recent call last): File "D:\blender\test_nesk_def.blend\test_lig ht.py", line 17, in <module> masks = Masks() TypeError: bpy_struct.__new__(type): expected a single argument Да, значит я делал что Вы мне посоветовали, просто не получилось из-за этой ошибки. Не знаю что с этим делать, буду читать и смотреть дальше. В любом случае спасибо за отклик)
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
||
| 08.06.2021, 20:30 [ТС] | ||
|
А как надо?
0
|
||
|
Автоматизируй это!
|
|||
| 09.06.2021, 06:37 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
|||
| 09.06.2021, 17:48 [ТС] | |||
|
Мне просто ни с того, ни с сего понадобилось и очень срочно это сделать, я не думал даже, что пригодится, поэтому приходится все быстро изучать, впитывать и применять, это мой первый код на Python и второй вообще в программировании. То есть у меня генерируется случайным образом значение переменной light и вот это сгенерированное значение нужно подставить в функцию masks в другом классе. Можно создать новую переменную и в него записать значение light, но по простому так не получается, там выдает другую ошибку.
0
|
|||
|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
|||||||
| 10.06.2021, 01:21 [ТС] | |||||||
Далее если я нажимаю кнопку "Mask" ( при этом галочка тоже должна стоять, на фото она показана ) у меня генерируется маска ( просто картинка с другим освещением ) и там я настроил чтобы освещение поменялось. Но если я убираю галочку и нажимаю эту кнопку еще раз, у меня освещение должно вернуться в исходное состояние до маски. За маски и свет отвечают 2 разных класса, вот мне значение переменной light из класса Random_light(Operator) надо перекинуть в класс Masksss(Operator).
0
|
|||||||
| 10.06.2021, 16:46 | |||||||||
|
Вообще трудно говорить о связях, когда нет полного кода и алгоритма, что он делает. Добавлено через 21 минуту Но во-первых это не для быстрого изучения, а во-вторых, 4-ое издание уже устарело, а что бы читать 5-ое издание, нужно уже хорошо знать классы (и ООП в целом), так как для новичков, трудно воспринимаем. Возможно это связано с корявым переводом на русский (перевод на русский, который я читал, 4-ого издания, был лучше). Я не достаточно знаю английский, что бы читать в оригинале. Лутц конечно замечательная книга, но для самостоятельного изучения новичком, она не под силу. По ней хорошо заниматься и достичь глубоких знаний Питона, но только если Вы изучаете ее под руководством куратора (профессионального программиста , хорошо знающего ООП), который разъясняет Вам все, что Вам по ходу изучения этой книги не понятно. Краткий курс ООП, для быстрого его освоения, я думаю может дать только хороший репетитор. Если же Вам просто нужен быстрый результат в написании кода, то выход только один, это фриланс. ![]() Что касается изучения Питона и в частности ООП, может кто то здесь посоветует что то хорошее из литературы. Я же по Питону ничего кроме Лутца не читал. ![]() Добавлено через 37 минут Образец кода:
mcratveller, в такую квалифицированную переменную можно вносить изменения и читать из любого места программы. А что бы избегать ошибок, которые могут возникать при использовании обычных глобальных переменных, нужно в атрибут sources , когда Вы пишете код, вручную заносить все те места, которые вносят изменение в значение данной переменной. И учитывать этот список при отладке работы программы, что бы исключать возможные ошибки. Добавлено через 5 минут mcratveller, В Вашем случае, В в одном классе заносите значение в атрибут v такой переменной, а из другого класса читаете значение этого атрибута из этой переменной. Доступно в любом месте кода. Добавлено через 4 минуты Это в какой то степени тот же прием с атрибутом, который предложил Welemir1, но в таком виде делает его более универсальным, для использования в разных случаях.
0
|
|||||||||
| 10.06.2021, 16:46 | |
|
Помогаю со студенческими работами здесь
12
Работа со значением переменной между классами
Работа с классами (использование и применение классов) Использование одного элемента двумя классами Сортировка списка с классами по переменной в классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|