Форум сайта python.su
из мануала:
Двойное подчеркивание работает как указание на то, что атрибут - приватный.
При этом атрибут все же доступен, но уже под другим именем.
попробовал, - изменить такой атрибут можно.
вопрос - зачем они такие приватные атрибуты нужны?
если объект приватный, то значит он должен быть доступен только внутри класса, так?
Офлайн
axeне в питоне ;).
если объект приватный, то значит он должен быть доступен только внутри класса, так?
Офлайн
Да, инкапсуляция в питоне - “мягкая”, то есть не на уровне физического доступа, а только на уровне организации кода.
Офлайн
с другой стороны - это хорошо, в плане индивидуального код-стиля. но конечно в энтерпрайзе - с кучей програмеров и текучкой кадров - страшно…. но с другой стороны - если неправильно писать, то и жава не поможет =)
Офлайн
axeНе совсем так. В питоне приватные атрибуты существую для того, чтобы избежать случайных конфликтов. То есть, если ты наследуешься от какого-то класса и создаешь в нем какой-то атрибут, то даже если ты ему случайно (потому как не знаешь, да и не должен знать, имена приватных атрибутов родителя) даёшь такое же имя, как в родительском классе, то на самом деле это будут разные атрибуты. Задумка замечательная, но, к сожалению, реализация подкачала: если по каким-то причинам имена классов совпадут (например, в модуле ConcretePlugin класс Plugin наследуется от класса Plugin, определённого в модуле Base - вполне распространённая практика), то конфликт всё же возникнет.
если объект приватный, то значит он должен быть доступен только внутри класса, так?
Офлайн