class MyClass:
def __init__(self, a):
self.a = a
def append(some_list):
some_list.append(["d"])
foo =[["a"],["b"],["c"]]
bar = foo
my_class = MyClass(foo)
append(bar)
for item in bar:
item[0] += "x"
letters = item[0]
letters += "z"
print (my_class.a)
Дает результат
[['ax'], ['bx'], ['cx'], ['dx']]
В этом примере происходит довольно много всего, и я чувствую себя довольно хорошо обо всем, за исключением того, что я ожидал, что «z» будет помечен на строки тоже, но это не так.
Может кто-нибудь объяснить, почему имеет смысл не включать «z» в строки?
Я думал, что индексация вернет «контейнер» со строкой а затем добавление «z» изменит сохраненную строку. По-видимому, создается отдельный «контейнер», но я не понимаю, как и почему.
(Если добавление к строке создает новую строку, я не знаю, почему такое же поведение будет происходить и с целыми числами. который я тестировал ... Будет ли использование float другого результата?)