簡體   English   中英

python - 為什么只讀屬性可寫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM