This feature replaces the use of string subscripts, which have this same problem.
The potential issue is quite clear when a string literal is used as a subscript.
If you don’t use wrapper classes, you’ll get no static guarantees with or without this proposal.
Of course you will never get the same kind of guarantees that you do with static dispatch. For example, the underlying Python type could change a member name.
However, if you declare constants for the members in use you can get a guarantee that all uses of that member are using the same string value. In other words, you avoid duplicating string literals throughout your code. There is value in doing this whether you are writing a wrapper or not. For example, if the underlying Python type did change a member name you only need to update a single constant to bring your Swift code back in sync with Python.