Найти - Пользователи
Полная версия: приватные атрибуты класса
Начало » Python для новичков » приватные атрибуты класса
1
axe
из мануала:
Двойное подчеркивание работает как указание на то, что атрибут - приватный.
При этом атрибут все же доступен, но уже под другим именем.

попробовал, - изменить такой атрибут можно.
вопрос - зачем они такие приватные атрибуты нужны?

если объект приватный, то значит он должен быть доступен только внутри класса, так?
Viper
axe
если объект приватный, то значит он должен быть доступен только внутри класса, так?
не в питоне ;).
Ferroman
Да, инкапсуляция в питоне - “мягкая”, то есть не на уровне физического доступа, а только на уровне организации кода.
cybergrind
с другой стороны - это хорошо, в плане индивидуального код-стиля. но конечно в энтерпрайзе - с кучей програмеров и текучкой кадров - страшно…. но с другой стороны - если неправильно писать, то и жава не поможет =)
ods
axe
если объект приватный, то значит он должен быть доступен только внутри класса, так?
Не совсем так. В питоне приватные атрибуты существую для того, чтобы избежать случайных конфликтов. То есть, если ты наследуешься от какого-то класса и создаешь в нем какой-то атрибут, то даже если ты ему случайно (потому как не знаешь, да и не должен знать, имена приватных атрибутов родителя) даёшь такое же имя, как в родительском классе, то на самом деле это будут разные атрибуты. Задумка замечательная, но, к сожалению, реализация подкачала: если по каким-то причинам имена классов совпадут (например, в модуле ConcretePlugin класс Plugin наследуется от класса Plugin, определённого в модуле Base - вполне распространённая практика), то конфликт всё же возникнет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB