В настоящее время я делаю проект, в котором у меня есть объект G, и я передаю его в функцию foo (G), в которой я устанавливаю различные атрибуты G. Затем я устанавливаю новую переменную, равную одному из этих атрибутов. Однако, когда я изменяю эту переменную, она модифицирует базовый атрибут. Позвольте мне показать вам:
class Foo:
def __init__(self):
self.name = "name"
def npzeros(g):
g.zeros = np.zeros((1,1))
f = Foo()
npzeros(f)
test = f.zeros
#test[:,-1]=test[:,-1]+1
#test = test+1
print(test)
print(f.zeros)
Когда я делаю test=test+1
, я получаю:
[[1.]]
[[0.]]
Когда я делаю test[:,-1]=test[:,-1]+1
, я получаю:
[[1.]]
[[1.]]
Я понятия не имею, почему эти два должны быть разными. Может кто-нибудь объяснить, что происходит?