|
0 / 0 / 0
Регистрация: 08.06.2021
Сообщений: 6
|
||||||
Использование переменной между классами08.06.2021, 16:10. Показов 3407. Ответов 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
Работа со значением переменной между классами
Работа с классами (использование и применение классов) Использование одного элемента двумя классами Сортировка списка с классами по переменной в классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|