私はPythonを初めて使い、プロパティを発見しました。私は単純な変数でそれを試してもうまく動作しますが、リスト上で動作させることはできません。下のコードを実行すると、setterではなくgetterが2回呼び出されます。私の例では、プロパティは付加価値がないが、単純化することを知っている。リストのPythonプロパティ
class C:
def __init__(self):
self._x = [1, 2, 3]
@property
def x(self):
print("getter")
return self._x
@x.setter
def x(self, value):
print("setter")
self._x = value
c = C()
c.x[1] = 4
print(c.x[1])
誰かが私が間違っていることについてのアイデアはありますか?あなたc.x[1] = 4
本当にc [1] = 3?を呼んでいますか?クラスに2つのリストがあればどうですか? –
@MahshidZeinalyクラスに2つのリストがある場合は、おそらく '__getitem__'または' __setitem__'アプローチを使用しないでください。あるいは、それを大幅に変更する必要があります。私はコードを書いたときに1つのリストについて考えましたが、それ以上の情報がなければ少し曖昧です。いつどちらを変えるべきですか?または両方? – MSeifert