Named tuples are fine, but what do they have over using classes or dictionaries?
They also let you improve readability (as the article states), while being full compatible with the ordinary tuple api. In other words, I can make a named tuple where I think it will improve my own code, and then pass it into someone else's code that is expecting a tuple and it will work. If you had used a dict or somesuch in this scenario, you would have to do something to marshall the state back into a tuple before you could pass the data into some library that expects tuples, e.g. numpy or something.