Pythonのプロパティとデコレーターのサンプルです。
確認環境 ・Python 3 |
目次
サンプル | プロパティ |
デコレーター |
プロパティ
class property(fget=None, fset=None, fdel=None, doc=None) |
- property 属性を返します。
- fget は属性値を取得する関数を指定します。ゲッター(getter)です。
- fset は属性値を設定する関数を指定します。セッター(setter)です。
- fdel は属性値を削除する関数を指定します。デリーター(deleter)です。
- doc は属性の docstring を作成します。
- 以下は、Pythonの公式ドキュメントのpropertyのリンクです。
https://docs.python.org/ja/3.5/library/functions.html#property
プロパティのサンプルです。
# coding: utf-8
class Color:
__name = None
def getName(self):
return self.__name
def setName(self,a):
self.__name = a
def delName(self):
print("abc")
p1 = property(getName,setName,delName)
c1 = Color()
c1.p1 = "赤"
print(c1.p1) # 赤
del(c1.p1) # abc
15行目は、property関数です。
1つめの引数はゲッター(getter)です。値を取得するのに使用します。
2つめの引数はセッター(setter)です。値を設定するのに使用します。
3つめの引数はデリーター(deleter)です。値を削除するのに使用します。
19行目は、値をセットしています。15行目のセッターが使用されます。
21行目は、値を取得して表示しています。15行目のゲッターが使用されます。
23行目は、delを使用しています。15行目のデリーターが使用されます。
デコレーター
- デコレーターは、@を使用してプロパティを定義します。
デコレーターのサンプルです。
# coding: utf-8
class Color:
__name = None
@property
def test1(self):
return self.__name
@test1.setter
def test1(self,a):
self.__name = a
@test1.deleter
def test1(self):
print("abc")
c1 = Color()
c1.test1 = "赤"
print(c1.test1) # 赤
del(c1.test1) # abc
6行目は、@propertyがあります。7行目のtest1がプロパティ名になり、かつゲッターの宣言になります。
10行目は、@test1.setterがあります。プロパティ名+setterです。セッターの宣言になります。
14行目は、@test1.deleterがあります。プロパティ名+deleterです。デリーターの宣言になります。
20行目は、値をセットしています。
22行目は、値を取得して表示しています。
24行目は、15,16行目のメソッドを実行しています。
関連の記事
Python入門 クラスの仕組みとサンプル
Python クラスの継承の仕組みとサンプル
Python オーバーライドのサンプル