There's no easy way to do it...
I think SOAPpy lacks functionality for custom namespaces and types. It's only good for simple web services that use \*standard* types like string, etc... no idea how to make it work with say type='ServiceInstance'
ZSI could do it, but its very complicated (or so it seems). ServiceProxy class in ZSI can generate API dynamically but passing any message of type other than one of simple types requires you to define it!
wsdl2py seems to generate type classes, but somehow I couldn't get anything sensible out of wsdl2py... my guess is that it has less functionality than ServiceProxy and just can't handle VIM
VIM is preety complicated service after all
I'm currently scribbling in IronPython for convenience sake using .Net generated bindings... but in the end I think I'll rewrite it with pure .Net
Hope it helps...
If you figure out how to do it in Python, please let me know.