[0] https://docs.python.org/3/library/typing.html [1] http://mypy-lang.org/
It's also slow, but I can deal with slow. Machine time is often cheap, while developer time is expensive.
Having worked on a python codebase for the past eight years, static typing isn't really much of an issue. Just document what types you expect, and write the code to match. If it runs, it runs. Plus, you have pylint to catch most of the silliest mistakes.
Python has finalizers rather than destructors, though they are sometimes referred to as destructors (the Python docs explicitly note that this is incorrect but not why, there is discussion of the difference—inbthe context of C#—here: https://blogs.msdn.microsoft.com/ericlippert/2010/01/21/what... )
> It's also slow
It looks to me like you're describing Nim. Static typing, similar syntax to Python, expressive, readable, powerful, fast; and destructors are being worked on as we speak.
$ python -c "import this" | grep purity Although practicality beats purity.
You probably meant to write "statically typed"
Python doesn't have just hinting, it has an optional static typechecker.
Anyhow, I don't see it's weirder than static languages adding the option to use “dynamic” as a pseudotype to opt out of static typing on a case by case basis.
Languages are more than typing regimes, and language designers can believe that there is no one typing regime that is right for all use cases.