このプロパティで装飾されたコードの温度を取得して設定する方法について少し混乱します。これは、プロパティデコレータを使用する正しい方法ですか?しかし、私はそれを使用する方法がわかりません。私はc.temperatureを呼び出すことができ、初期値(0またはクラスをインスタンス化するために使用したもの)を返しますが、その後はset_temperature()を使用して温度を設定できません。私はこのトピックについての2つのSO答えを見たが、おそらくその点を見逃していた。getterとsetter用のプロパティデコレータ
class Celsius:
def __init__(self, temperature=0):
self._temperature = temperature
def to_f(self):
return self._temperature * 1.8 + 32
@property
def temperature(self):
print "Celsius:get_temperature"
return self._temperature
@temperature.setter
def temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is impossible")
print "Celsius:set_temperature"
self._temperature = value
"その後、私はset_temperature()を使って温度を設定できません" - なぜあなたは 'set_temperature'と呼ばれるものがあると思いますか?あなたは決してその名前で何も定義しませんでした。 – user2357112
実際にはそれはちょうどc.temperature = 10であってもうまくいきませんでした。たとえば、オブジェクトから継承していなかったので、私は思っています(他の回答に記載されています) – user3079275