1

そのため、クラス変数をインスタンス変数に割り当ててから、 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 が変更されるのか疑問に思っていました。

4

4 に答える 4