Python 属性限制访问
我有以下代码:
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
这应该是可以工作的 (可以查看这里)。但是,它并没有正常工作,我的问题如下:
- 有没有可能限制用户这样做:
c.dx = 42
? - 如果可以的话,怎么做?(我的目的是让属性只能读取,我知道总有办法绕过这个限制,但我只是想阻止标准的 c.dx = val 这种写法有效)
2 个回答
0
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
4
没有定义设置器的property
是只读的。这可能不工作的唯一原因是你在使用Python 2,并且定义了一个旧式类。记得在Python 2.x中一定要从object
继承:
class C(object):
@property
def dx(self):
return self._dx
def __init__(self, dx = 1):
self._dx = dx