Я пишу простой класс, который имеет фазу инициализации в зависимости от некоторой переменной, он перезаписывает предыдущую переменную.
Строго необходимо делать копию при вводе данных, чтобы не перезаписывать переменную?
В качестве примера:
import numpy as np
Input = np.array([ [0,1], [1,1] ])
class A:
def __init__(self, I):
self.B = I
Когда я пишу:
Trial = A(Input)
Trial.B
Правильно выдает:
array[[0,1]
[1,1]]
Если я хочу сделать полное изменение, например:
Trial.B = 'Hello'
Это не меняет вход .Однако, если я повторю все это до этого момента, и теперь мы вместо этого запишем другое изменение, например:
Trial.B[0] = 2
Теперь, если я попрошу о вводе, это даст:
np.array([[2,2]
[1,1]])
Теперь он изменил переменную Input!
Почему это происходит?Должен ли я всегда писать:
class A:
def __init__(self, I):
self.B = I.copy()
, чтобы не испортить переменную?Почему это только портит, когда тип измененных данных такой же, как в переменной?
Спасибо.