gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:53:09 24 4
gpt4 key购买 nike

我正在尝试在 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。我看到的是预期的吗?如何确保属性不可设置?

最佳答案

要使其按预期工作,Test 需要是一个新样式的类:

class Test(object):
^^^^^^^^

这在 documentation for property() 中有所暗示:

Return a property attribute for new-style classes (classes that derive from object).

当我将 Test 转换为新式类,并尝试更改 prop 时,出现异常:

In [28]: t.prop='Re-Init'

AttributeError: can't set attribute

关于python - 为什么只读属性是可写的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com