imy*_*suf 16 python properties readonly private-members python-2.7
我试图在Python中定义一个只读属性的类; 我按照Python文档编写了以下代码:
#!/usr/bin/python
class Test:
def __init__(self, init_str):
self._prop = init_str
@property
def prop(self):
return self._prop
t = Test("Init")
print t.prop
t.prop = "Re-Init"
print t.prop
Run Code Online (Sandbox Code Playgroud)
现在当我尝试执行代码虽然我期待错误/异常时,我看到它正常执行:
$ ./python_prop_test
Init
Re-Init
Run Code Online (Sandbox Code Playgroud)
我的Python版本是2.7.2.我所看到的,是否有望?如何确保房产不可设置?
NPE*_*NPE 24
为了使其按预期工作,Test需要成为一个新式的类:
class Test(object):
^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
这在文档中property()暗示:
返回新样式类(派生自的类
object)的属性属性.
当我Test变成一个新式的类,并试图改变时prop,我得到一个例外:
In [28]: t.prop='Re-Init'
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud)