Earlier quoted context omitted.
> This is primarily because of inheritance, which seems counter-intuitive I agree that inheritance creates a lot more problems, but the usages of non-static methods and internal state even in classes with no usage of inheritance can feel just as bad, when you have a high level method utilizing instantiated objects. Internal state as a whole can be avoided fairly often
I don’t see much difference between some_state.do_stuff() do_stuff(some_state)
OTOH, the second one would be much better (and imply immutability) if it were written as
new_state = do_stuff(some_state)
But it'd also allocate a new state.