Python má historicky dva různé způsoby vytváření "recordu" - dictionary (pohodlnější) a class (těžkopádnější, ale systémovější). V poslední době přišly dvě novinky - named tuple a dataclass, protože prostě ani dictionary (nejdynamičtější řešení z dynamických) ani "normální" třída nejsou zase tak moc super.
To všechno je ale pod kapotou netypovaný dict. viz x.__dict__
A vo tom to je. Vytvořila se abstrakce, která má v některých ohledech výhodnější vlastnosti než vrstva pod ní. Dictionary je skvělá obecná struktura, protože do ní můžu vložit prakticky cokoli, ale mizerná struktura pro popis dat, která mají pevný formát. Normální třída v Pythonu je skvělý obecný nástroj, protože je velice flexibilní, ale z pohledu člověka, který chtěl record a nic víc, je to kanon na vrabce se vším všudy.
Dynamické jazyky jsou super, protože dovolují naprogramovat všechno a všelijak. Pokud po nich chceme přesnost, rychlost a spolehlivost, je ta flexibilita spíš na obtíž. Můj odhad je, že dynamické jazyky budou ustupovat, protože jejich základem je snadnost implementace a vyhýbání se složitostem návrhu, což jim historicky přinášelo nemalé výhody. Statické jazyky se ale vyvíjejí, jak z hlediska ergonomie, tak z pohledu podpory nástrojů a možností.