У меня есть 2 объекта (1 и 2) из одного класса и 1 объект (A) из другого класса. Когда я использую функцию из A, чтобы изменить атрибуты объекта 1, атрибуты объекта 2 изменяются, и я понятия не имею, почему.
Initial input flows of Unit2: []
Initial output flows of Unit2: []
Flow A set destination to Unit 1
Input flows of Unit2 after setting FlowA's destination to Unit1: ['A']
Output flows of Unit2 after setting FlowA's destination to Unit1: []
В идеале я бы ожидал, что будет изменен только Unit1, а Unit2 останется нетронутым с помощью set_destination. Я не знаю, что вызывает эту проблему, поскольку Unit1 и Unit2 не используют одно и то же пространство памяти, а априорный set_destination изменяет только единицу измерения в аргументе. Кто-нибудь знает, что вызывает эту проблему? Или знаете лучший обходной путь?
Заранее спасибо!
У меня есть 2 объекта (1 и 2) из одного класса и 1 объект (A) из другого класса. Когда я использую функцию из A, чтобы изменить атрибуты объекта 1, атрибуты объекта 2 изменяются, и я понятия не имею, почему. [code]import numpy as np
def set_destination(self, Destination_unit): if self.attributes['destination'] == Destination_unit.name and self.attributes['name'] in Destination_unit.input_flows: pass # Do nothing if already correctly assigned elif self.attributes['destination'] != Destination_unit.name: if self.attributes['destination']: # Remove from previous destination if exists prev_unit = next((unit for unit in processunits if unit.name == self.attributes['destination']), None) if prev_unit: prev_unit.input_flows.remove(self.attributes['name']) # Add to new destination Destination_unit.input_flows.append(self.attributes['name']) self.attributes['destination'] = Destination_unit.name print(f"Flow {self.attributes['name']} set destination to {self.attributes['destination']}")
print(f"Initial input flows of Unit2: {Unit2.input_flows}") print(f"Initial output flows of Unit2: {Unit2.output_flows}")
FlowA.set_destination(Unit1)
print(f"Input flows of Unit2 after setting FlowA's destination to Unit1: {Unit2.input_flows}") print(f"Output flows of Unit2 after setting FlowA's destination to Unit1: {Unit2.output_flows}")
print(Unit1) print(Unit2)
[/code] И вывод на консоль: [code]Initial input flows of Unit2: [] Initial output flows of Unit2: [] Flow A set destination to Unit 1 Input flows of Unit2 after setting FlowA's destination to Unit1: ['A'] Output flows of Unit2 after setting FlowA's destination to Unit1: []
[/code] В идеале я бы ожидал, что будет изменен только Unit1, а Unit2 останется нетронутым с помощью set_destination. Я не знаю, что вызывает эту проблему, поскольку Unit1 и Unit2 не используют одно и то же пространство памяти, а априорный set_destination изменяет только единицу измерения в аргументе. Кто-нибудь знает, что вызывает эту проблему? Или знаете лучший обходной путь? Заранее спасибо!
Я пытаюсь использовать для цикл для итерации через набор переменных, проверьте, являются ли эти переменные, хранящиеся данные строковых данных (в частности, их строка Pokemon.evolution '), так же, как имен переменной в наборе, а затем заменить эту...
Я пытаюсь использовать для цикл для итерации через набор объектов, проверить, хранят ли эти объекты данные строковых данных (в частности, их переменная Pokemon.evolution '), что такое же имя одного из объектов в наборе, а затем заменить эту строку...
Я пытаюсь использовать для цикл для итерации через набор объектов, проверить, хранят ли эти объекты данные строковых данных (в частности, их переменная Pokemon.evolution '), что такое же имя одного из объектов в наборе, а затем заменить эту строку...
Я пытаюсь использовать для цикл для итерации через набор объектов, проверить, хранят ли эти объекты данные строковых данных (в частности, их переменная Pokemon.evolution '), что такое же имя одного из объектов в наборе, а затем заменить эту строку...