python - 为什么只读属性可写?

16 投票
2 回答
5287 浏览
提问于 2025-04-17 19:23

我正在尝试在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

现在,当我尝试执行这段代码时,虽然我预期会出现错误或异常,但它却正常执行了:

$ ./python_prop_test 
Init
Re-Init

我的Python版本是2.7.2。我看到的情况是正常的吗?我该如何确保一个属性是不可设置的?

2 个回答

4

要使用属性,你必须使用新式类。在Python 2中,要使用新式类,你需要从 object 这个类继承。把你的类定义改成 class Test(object) 这样就可以了。

撰写回答