Комментарии 4
Очень жаль что победил Python, а не Ruby. Моё личное персональное мнение, которое может не совпадать с другими. Синтаксис с подчеркиваниями и переименование на лету на базе этого - выглядит как лютый костыль. А вообще в JS в своё время такое было, по конвенции ставили приватному в начале нижнее подчеркивание. А в Google было принято помечать в конце. Там защиты дополнительной не было, просто ты сразу знал куда лезешь. А потом появился TypeScript. Остаётся надеяться что Ruby воскреснет, но пока он застрял в Rails, по факту. Возможно это и погубило. А концептуально намного лучше чем Python, продуманнее и код выглядит чисто, как английский текст, без визуального мусора. И приватные методы там есть, но очень красиво сделано - пишешь private в середине класса и все методы что идут ниже - теперь приватные. И никаких подчеркиваний и никаких private на каждый метод. Идеальный способ.
Вроде неплохая статья, но со многим не согласен.
Геттеры сеттеры зло не потому, что они многословные. Пример с property не решает проблему геттеров, сеттеров (это же просто реализация). Проблема геттеров и сеттеров это то, что они противоречат инкапсуляции и по сути выносят наружу свойства, вместо обработки внутри класса (есть правило "Don't Ask, Tell"). Да и в целом не понял примера, ведь property это и есть геттеров и сеттеры, но они же "зло"
Поначалу, как мне кажется, проще все делать private (то есть `_attr`)
Двойное подчеркивание, зачастую июля библиотек нужно, чтобы не затерли случайно метод при наследовании
А так неплохую тему затронул, сам копал эту тему, но я к другим выводам пришел)))
Нормальная инкапсуляиция - выделение интерфейсов, когда вы просто заявляете что есть, а об остальном потребитель ни сном ни духом. Все эти "private" в языках наследников c++ - от бедности, когда технтчески понадобилось светить все внутренности потребителю класса и не надо проводить с ними параллели и пытаться повторить.

Инкапсуляция в Python: property, name mangling и никаких кофемашин