1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. デコレター

デコレター

プロパティの設定

ともに、name()という名前を持つが、前に付くデコレータが
異なるふたつのメソッドを定義する。
プロパティを使ってアクセスする。

class Duck():
def __init__(self, input_name):
self.hidde_name = input_name
@property:
def name(self):
print('inseide the getter')
return self.hideewn_name
@name.setter
def name(self, input_name):
print('insaide the setter')
self.hidden_name = input_name
これらを定義しても、まるで属性であるかのようにnameに
アクセスすることはできるが、目にみえるget_name(),set_namenに
メソッドはない。
fowl = Duck('Howard')
fowl.name
insaid the getter
'Howard'

fowl.name = 'Donald'
insaid the setter
fowl.name
inside the getter
'Donald'

計算された値も参照できる

radius(半径)属性と計算されたdiamete(直径)プロパティ
を持つCircleクラスを定義しよう
class Circle():
def __init__(self, radius):
self.radius = radius
@property
def diameter(self):
return 2 * self.radius
Circleオブジェクトを作るときには、radius属性の初期値を指定する
c = Circle(5)
c.radius
5
diameatetは、radiusのような属性とまったく同じ様に参照できる
c.diamete
10
面白いのはここからだ。radius属性はいつでも書き換えられる
c.radius = 7
c.diamete
14