Ultimately, since Python is dynamic down to being able to override the data model of an object on the fly, there would be no point. There is no point in any program really. Underscores do just as good of job as public/private declarations at telling me which parts of the API are for users and which are for the class. I might use private attributes and methods, but I ought to know what I'm doing if I do. Any program's data can be made public, and the more frequently the need arises, the better programmers get at using introspection to uncover the private members, and suddenly there's no point.
One of the older justifications given for encapsulation and header files was to be able to sell binary objects. If you can't read the source for the library, you can't figure out how all the parts work, so you better use the public API or you might really screw something up. This is totally irrelevant in the world of open source software. Underscores are a totally valid solution to telling other programmers who might modify the encapsulation what the intent was at one point, giving them a strong hint that they need to dig deeper before messing around. If encapsulation is a gentleman's agreement, why does it need a language feature?