そのため、クラス変数をインスタンス変数に割り当ててから、 initメソッド内でインスタンス変数を変更する必要がある何かを Python でプログラミングしていました。コードを少し簡略化して実行すると、クラス変数も変更されます。
class Map():
map = [1,2,3]
def __init__(self):
self.map = Map.map
for i in range(len(self.map)):
self.map[i] = self.map[i] * 2
print("self.map =", self.map)
print("Map.map =", Map.map)
new_map = Map()
実行すると、次の出力が得られます。
self.map = [1, 4, 9]
Map.map = [1, 4, 9]
基本的に、self.map を変更しただけなのに、なぜ Map.map が変更されるのか疑問に思っていました。