"real refactoring" isn't generally available to those of us using dynamic languages like Python (or at least I've never seen it done well) so multiple cursors is about the best we can get unfortunately.
It’s kind of weird that dynamic languages are known as being bad at refactoring, when Smalltak was doing advanced full system refactoring in the 1980s.
In the case of Python, I think the problem must be more syntactic and lacking an introspectable compile step than an issue with it being a dynamic language.