Я написал эту простую программу на Python, чтобы помочь мне с ошибкой в другой программе. Это ясно иллюстрирует проблему.
import copy
class Obj(object):
def __init__(self, name):
self.name = name
def one(o):
print("1: o.name:", o.name) # "foo"
obackup = copy.deepcopy(o)
o.name = "bar"
print("2: o.name:", o.name) # "bar"
print("3: obackup.name:", obackup.name) # "foo"
o = obackup
print("4: o.name:", o.name) # "foo"
def two(o):
print("5: o.name:", o.name) # "bar"!
def main():
o = Obj("foo")
one(o)
two(o)
main()
Я предполагаю, что o
перезаписывается как локальная переменная функции one()
Но я понятия не имею, как это исправить.