Ты в питон из какого языка пришёл? =)
class Test:
a: list = []
Ты объявил атрибут
класса, а не экземпляра класса.
Так как у экземпляра класса нет атрибута a, питон ищет этот атрибут в самом классе - и находит.
У тебя в примере и
Test.a
тоже даст [3].
Атрибут экземпляра класса в питоне объявляется вот так:
class Test:
def __init__(self): # конструктор
self.a: list = []
Тут у каждого экземпляра будет своя копия списка.