With these languages it always seems like first came the language, and then its users tried really hard to make sense of it. So now apparently enforcing contracts is not important anymore. "Let's just code!" - sigh
It's almost an entirely distinct problem domain. Besides, what would a contract be in a dynamically typed language?
I don't think these features are bad, but they're not appropriate everywhere.
Yeah don't worry, I'm not gonna use Python.
> Besides, what would a contract be in a dynamically typed language?
Being dynamic has nothing to do with this. See: Clojure, PHP, etc. They have contracts.
Of course things might not be appropriate everywhere. But with Python/Ruby you don't have a choice, they just lack these features.