Вы переопределяете поле id
в своем объекте temp
, а затем добавляете его, поэтому ваш список будет содержать один и тот же объект несколько раз.
Вам нужно создать новое Test()
объект на каждой итерации:
for i in range(5):
temp = Test()
temp.id = i
test.append(temp)
print(test[-1].id)
Причина, по которой он печатает правильный вывод для первого запуска, заключается в том, что вы печатаете только что созданный идентификатор и не проверяете предыдущие значения.
Если вы добавите распечатку для списка, вы увидите, что поле id
меняется для всех.