[英]python - why is read-only property writable?
我試圖在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):
^^^^^^^^
這在property()
的文檔中暗示:
返回新樣式類的屬性屬性(從
object
派生的類)。
當我將Test
變成一個新式的類,並試圖改變prop
,我得到一個例外:
In [28]: t.prop='Re-Init'
AttributeError: can't set attribute
要使用屬性,必須使用新式類。 要在Python 2中使用新式類,必須從object
繼承。 將類def更改為class Test(object)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.