Свойство Python для ограничения доступа - PullRequest
1 голос
/ 28 октября 2011

У меня есть следующий код:

class C:
    def __init__(self, dx = 1):
       self._dx = dx
    def get_dx(self):
       return self._dx

    dx = property(get_dx,None,None)

c = C()
print c.dx
c.dx = 42
print c.dx  # this shows 42

Это должно работать (см. Здесь) .Тем не менее, это не так, и мои вопросы таковы:

  1. Можно ли вообще запретить пользователям делать:(я собираюсь создать атрибуты только для чтения, я знаю, что всегда есть способ взломать его, но я просто хочу предотвратить работу стандартного c.dx = val)

Ответы [ 2 ]

4 голосов
/ 28 октября 2011

property без указания установщика только для чтения. Единственная причина, по которой это может не сработать, заключается в том, что вы используете Python 2 и определили класс старого стиля. Не забывайте, что всегда происходит от object в Python 2.x:

class C(object):
    @property
    def dx(self):
        return self._dx

    def __init__(self, dx = 1):
        self._dx = dx
0 голосов
/ 28 октября 2011
  class C:
    def __init__(self, dx = 1):
       self.__dx = dx
    def get_dx(self):
       return self.__dx

    dx = property(get_dx,None,None)

c = C()
print c.get_dx()
print c.__dx  # this raise error

Источник: http://docs.python.org/tutorial/classes.html#private-variables

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