Все атрибуты, которые вы храните в классе можно найти в переменной __dict__. Если вы попытаетесь добавить новый атрибут, переменная изменится. Порой подобная фича бывает лишней. К тому же подобный подход потребляет больше памяти. Если с маленькими объектами проблем не возникнет, то вот на больших вы заметите значительную разницу. Тут на помощь приходит __slots__, он указывает, что у класса могут быть только атрибуты, которые находятся в списке. пример потребления оперативной памяти , с использованием __slots__, и без