2013-06-22 8 views
3

Можем ли мы моделировать частные и защищенные спецификации доступа в python?частных публичных защищенных спецификаторов доступа в python

Имя коверкания

например:

__var=10 

может имитировать частным, но ее жизнеспособный доступ снаружи легко с помощью объекта.

object._className__var 

Так есть способ, которым мы могли бы имитировать или сделать python прямое решение, о котором я не знаю?

ответ

6

У Python нет обязательного контроля доступа, как некоторые другие языки, к которым вы можете привыкнуть. Философия языка - «Мы все соглашаемся с взрослыми».

По соглашению частные атрибуты имеют префикс с подчеркиванием, что является подсказкой для людей, что они не должны использоваться напрямую. Но это просто соглашение. Если вы хотите использовать песочницу Python, вам нужно сделать это в отдельном процессе.

Целью двойного подчёркивания является предотвращение случайных коллизий имен, а не обеспечение контроля доступа.

+0

Спасибо @ Антитела. Я знаю, что для управления доступом используется ограничение имени. Кстати, мой вопрос заключается в том, как мы имитируем ограничения доступа, поэтому сообщение: p – deeshank

+2

Ответ у вас нет. Вы можете использовать рефлексивные хаки, чтобы их имитировать, но вы можете использовать отражение, чтобы обойти такие хаки так же легко. Реальный вопрос - это то, что вы пытаетесь достичь? – Antimony