Я представляю вам два functions
:
class Message:
def __init__(self, text, log):
self.text = text
self.log = log
def copy(self):
return Message(self.text, self.log)
def add(self, more):
self.text += more
self.log += more
return self
msg1 = Message("",[]).add("A")
msg2 = msg1.copy().add("B")
print(msg1.text, msg1.log)
print(msg2.text, msg2.log)
Это prints
A ['A', 'B'] AB ['A', 'B ']
Здесь происходит неожиданное (для меня):
list_1 = [1]
list_2 = list_1.copy()
list_2 += 'b'
print(list_1) # prints [1]
print(list_2) # prints [1,'b']
Так что я не могу понять, почему поведение не такоекак я использую + = в обеих функциях.Я прочитал документы для object.__iadd__
, но не смог понять из него решение моей проблемы.