私は、Pythonで読み取り専用のプロパティを持つクラスを定義しようとしています。私は、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
、機能するために
古いスタイルのクラスは、 'property'データ記述子に優先順位を与えません。インスタンスdictの属性をシャドーできます。 – eryksun