|
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 54
|
||||||
Передача параметра по ссылке25.03.2018, 21:00. Показов 4663. Ответов 6
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане!
Подскажите пожалуйста, как передать значение в функцию по ссылке? Объясню немного: есть класс, в нём есть переменная var и две функции: одна функция просто выводит свой аргумент, а вторая запускает новый поток, целью которого является первая функция и в неё передаётся в качестве параметра переменная класса var. Теперь в коде:
Parameter = 1 Class property = 1 Parameter = 1 Class property = 1 Parameter = 1 Class property = 2 Parameter = 1 Class property = 2 Press any key to continue . . . ну и так дальше.. с потоком намудрил Как сделать так, чтобы при смене значения поля класса параметр тоже изменялся и выводилось следующее: Parameter = 1 Class property = 1 Parameter = 1 Class property = 1 Parameter = 2 Class property = 2 Parameter = 2 Class property = 2 Press any key to continue . . . Заранее спасибо!
0
|
||||||
| 25.03.2018, 21:00 | |
|
Ответы с готовыми решениями:
6
Передача параметров по ссылке
Передача параметра потоку |
|
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
|
|
| 25.03.2018, 21:31 | |
|
Честно говоря, смысл кода остался непонятен. Вы изменяете атрибут экземпляра класса? Не проблема. Вы обращаетесь из метода класса к атрибуту конкретного экземпляра класса – тоже все хорошо. Предположим, что Ваша функция, работающая в другом потоке, и не являющаяся методом данного класса, хочет видеть изменения атрибутов нашего экземпляра класса – тоже не проблема, передайте ей этот объект.
Парадигма «по значению/по ссылке» в питоне совсем не такая, как в C. Аргументы передаются by assignment (не знаю, какой устойчивый перевод на русский). Передаваемый параметр – на самом деле ссылка на объект, но ссылка передается по значению. Кроме того, нектороые типы данных mutable, некоторые – immutable. Добавлено через 1 минуту вот тут почитайте, думаю это прояснит всё Добавлено через 4 минуты пара примеров на пальцах: – если передается строка (она immutable), то в outer scope никак нельзя «передать изменения строки», только возвратом нового измененного экземпляра – передается список (mutable). обращение к методам списка (например lst.extend или даже del lst[:]) – будет изменять список. но если написать что-то типа lst = lst[2:], то переменная lst будет связана уже с другим объектом (у нас появится «старый» и «новый» списки)
0
|
|
|
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
|
|||||||
| 25.03.2018, 21:36 | |||||||
|
Попробовал так
0
|
|||||||
|
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
|
|||||||
| 25.03.2018, 22:31 | |||||||
|
Вы читали, что я пишу? вы пишете self.var = something, при этом создается объект something, связанный с переменной var.
Добавлено через 3 минуты когда вы пишете print(object.name), то фактически вызывается object.__getattribute__(self, name):
вот примерчик:
1
|
|||||||
|
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 54
|
|
| 25.03.2018, 23:45 [ТС] | |
|
Тяжело как-то разобраться в этом всём. Вы не могли бы, пожалуйста, модифицировать первый пример в топике так, чтобы получился требуемый результат? Или это в принципе невозможно сделать?
p.s. нужно сделать, чтобы передавалось именно как параметр! Заранее спасибо!
0
|
|
|
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
|
||||||
| 25.03.2018, 23:57 | ||||||
|
Только если что-то такое
0
|
||||||
|
151 / 102 / 33
Регистрация: 11.08.2016
Сообщений: 574
|
|
| 26.03.2018, 00:22 | |
Сообщение было отмечено dimoncraft как решение
Решение
2 dimoncraft:
давайте я не буду повторять по несколько раз отдельно, напишу сразу 5 раз питон это не си питон это не си питон это не си питон это не си питон это не си в функцию передается (по значению) ссылка на объект в функцию передается (по значению) ссылка на объект в функцию передается (по значению) ссылка на объект в функцию передается (по значению) ссылка на объект в функцию передается (по значению) ссылка на объект присваивание переменной есть связывание переменной с новым объектом присваивание переменной есть связывание переменной с новым объектом присваивание переменной есть связывание переменной с новым объектом присваивание переменной есть связывание переменной с новым объектом присваивание переменной есть связывание переменной с новым объектом и прочтите «How do I write a function with output parameters (call by reference)?», ссылку я давал.
1
|
|
| 26.03.2018, 00:22 | |
|
Помогаю со студенческими работами здесь
7
Передача параметра по ссылке Передача параметра по ссылке
Передача параметра по ссылке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
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 и. . .
|