Две философии защиты
Некоторые разработчики языка придерживаются следующего предположения:
«Многие программисты безответственны, глупы или оба».
Эти дизайнеры языка будут испытывать желание защитить программистов друг от друга, введя спецификатор private
в их язык.
Вскоре они признают, что это часто слишком негибко, и вводят protected
.
Разработчики языка, такие как Гвидо ван Россум из Python, напротив, предполагают, что программисты ответственные взрослые и способны на здравое суждение (возможно, не всегда, но обычно).
Они считают, что каждый должен иметь доступ к элементам программы, если это необходимо, чтобы язык не мешал делать правильные вещи.
(Единственный язык программирования, который может надежно помешать сделать неправильный , - это NULL язык)
Следовательно, _myfield
в Python означает что-то вроде: «Разработчик этого модуля делает некоторые неочевидные вещи с этим атрибутом, поэтому, пожалуйста, не изменяйте его и не читайте его, если можете - подходящими способами для доступа к соответствующей информации были предоставлены (или так мы надеемся). "
Если вы не можете избежать доступа к _myfield
(например, в особых случаях в подклассе), вы просто получаете к нему доступ.