Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 13, 2008 13:29:24

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

приватные атрибуты класса

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

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

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



Офлайн

#2 Авг. 13, 2008 13:56:01

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

приватные атрибуты класса

axe
если объект приватный, то значит он должен быть доступен только внутри класса, так?
не в питоне ;).



Офлайн

#3 Авг. 13, 2008 14:17:01

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

приватные атрибуты класса

Да, инкапсуляция в питоне - “мягкая”, то есть не на уровне физического доступа, а только на уровне организации кода.

Офлайн

#4 Авг. 13, 2008 15:23:18

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

приватные атрибуты класса

с другой стороны - это хорошо, в плане индивидуального код-стиля. но конечно в энтерпрайзе - с кучей програмеров и текучкой кадров - страшно…. но с другой стороны - если неправильно писать, то и жава не поможет =)



Офлайн

#5 Авг. 18, 2008 12:15:56

ods
От:
Зарегистрирован: 2007-03-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

приватные атрибуты класса

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version