You might find this paper (its a PDF) interesting, it is by the same group that brought us Traits. It talks about adding a more flexible encapsulation policy to Smalltalk (it's concepts though are applicable to most dynamic OO languages (perl, python, etc)).
The author discusses the idea that many times you need more than one encapsulation policy. The simplest example being; one for public use, and one for use by subclasses (which would be roughly equivalent to public and protected), but they take it to the next level really. Interesting read.