[解決済み] Pythonの新スタイルのプロパティで「属性を設定できない」ことがある
2022-02-18 11:36:33
質問
新スタイルのプロパティ宣言を使おうとしています。
class C(object):
def __init__(self):
self._x = 0
@property
def x(self):
print 'getting'
return self._x
@x.setter
def set_x(self, value):
print 'setting'
self._x = value
if __name__ == '__main__':
c = C()
print c.x
c.x = 10
print c.x
と表示され、コンソールに以下のように表示されます。
pydev debugger: starting
getting
0
File "\test.py", line 55, in <module>
c.x = 10
AttributeError: can't set attribute
私は何を間違えているのでしょうか? 追伸:旧式の宣言でも問題なく動作します。
解決方法は?
ドキュメントには次のように書かれています。
のデコレーターフォームの使用について
property
:
追加関数には、必ず元のプロパティ(この場合はx)と同じ名前を付けてください。
を使用した場合、その理由は全く分かりません。
property
を属性として返す関数として使用すると、メソッドを好きなように呼び出すことができます。
そこで、コードを以下のように変更する必要があります。
@x.setter
def x(self, value):
'setting'
self._x = value
関連
-
Pythonによるjieba分割ライブラリ
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] virtualenvで異なるバージョンのPythonを使用する
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] Pythonの旧スタイルのクラスと新スタイルのクラスの違いは何ですか?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
-
[解決済み】Pythonでディレクトリ内の拡張子.txtのファイルをすべて検索する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】NameError: 名前 'self' が定義されていません。