Потому что то, что делает ваш код, не то, что вы думаете. Мелкая копия списка создаст новый список и добавит ссылки на объекты внутри него.
Дело в том, что у ссылки на два элемента (которые являются числами) есть ссылки на неизменяемый объект 1 и 2, а не на конкретные 1 и 2 внутри вашего списка. Вы можете проверить это, используя идентификатор:
temp = AClass()
id(temp.pos[0])
id(1)
Идентификаторы одинаковы, что означает, что ваш temp.pos [0] указывает на «глобальный» 1.
Если выдействительно хотел сделать что-то похожее на то, что вы думали, без больших изменений (например, с помощью методов для изменения pos), это должно было бы быть что-то вроде этого:
import copy
class AClass:
def __init__(self):
self.pos = [[[1]], [[2]]]
self.pos_x = copy.copy(self.pos[0])
self.pos_y = copy.copy(self.pos[1])
Затем, copy создаст новый список и вставитссылка на список с 1 там. И изменение t [0] [0] [0] также изменит x [0] [0]. Но это, вероятно, далеко не хороший способ сделать это. И снова вы можете проверить, что идентификаторы t [0] [0] и x [0] одинаковы, поэтому они оба указывают на один и тот же список.