return
文の前に、のprint()
コールを使用しました。関数実行は、その時点でを終了し、print()
は到達しません:
def get_speed(self):
# return ends a function
return self._speed
# anything beyond this point is ignored
print("the speed is {}".format(self.speed))
をprint()
コール前にreturn文入れ:
def get_speed(self):
print("the speed is {}".format(self._speed))
return self._speed
を私は(self._speed
を表示するprint()
機能を修正とは属性名のアンダースコアになります)、そうでなければ無限の再帰になります(self.speed
がトリガーするのでプロパティは再びgetter)。あなたができる、
class Car(object):
def set_speed(self, speed):
self._speed = speed
print("set speed to {}".format(speed))
def get_speed(self):
print("the speed is {}".format(self._speed))
return self._speed
speed = property(fget = get_speed, fset=set_speed)
次へ:あなたは、おそらくそれはあまりにもget_speed()
ゲッターを誘発するだろうとset speed to <newspeed>
はあなたが速度を変更するたびに印刷される前に、あなたはthe speed is <newspeed>
が印刷表示されますよう、set_speed()
機能で同じことをやってみたいですproperty
オブジェクトをデコレータとして使用する;
class Car(object):
@property
def speed(self):
print("the speed is {}".format(self._speed))
return self._speed
@speed.setter
def speed(self, speed):
self._speed = speed
print("set speed to {}".format(speed))
が動作する方法としてHow does the @property decorator work?を参照してください。結果property
インスタンスは、あまりにもセッターを飾るために再利用することができsetter()
方法があります。
うわー、どうしたの?ありがとうございました。 – p3ob2lem