Оказывается, в Python 3.7 завезли dataclass’ы. Довольно удобная штука. В более старых проектах можно использовать attrs и там же можно почитать, зачем они вообще нужны. Главное, не увлекаться. Чаще всего, namedtuple будет более чем достаточно.