def data_query(Chan, Mode, Format, Sampling, Wave_Data):
if Mode.get_state() == 'NORM':
if Chan.get_state() == 'CHAN1':
wave_dict = Wave_Data.get_wave_data(1)
if Format.get_state() == 'ASCII':
return wave_dict
elif Format.get_state() == 'BYTE':
for i in range(0, len(wave_dict)):
wave_dict[i] = bin(int(wave_dict[i]))
return wave_dict
Таким образом, в приведенном выше коде параметр «Wave_Data» является экземпляром другого класса, который содержит значение dict «self.wave1», которое возвращается функцией «get_wave_data».
def get_wave_data(self, channel=1):
if channel == 1:
return self.wave1
elif channel == 2:
pass
Моя проблема в том, что в приведенном выше коде, когда я изменяю значения в локальном dict - 'wave_dict' (то есть преобразовываю значения в двоичный файл), он также меняет значения в self.wave1. Если я правильно понимаю, это действует как указатель на объект self.wave1 (который я передаю с помощью сокетов udp через другой поток), а не обычную локальную переменную.
Кстати, первый блок кода - это функция в основном потоке, а второй блок кода - это функция в классе, который выполняется как поток демона, экземпляр которого также передается в data_query функция.
Любая помощь будет оценена. Извините, если я где-то использовал неверную терминологию.