Pythonのproperty()関数を用いてクラスでプロパティを定義してみます。プロパティは属性(共通して備わる性質や特徴)、または詳細なデータという認識である。
property()関数は、プロパティクラスのオブジェクトを返し、クラスのプロパティを作成します。また、property()関数は、get、set、delete 関数を引数,パラメータとして受け取り、プロパティ クラスのオブジェクトを返します。
■Python
今回は、Google Colaboratoryを用います。Google ColaboratoryのPythonのバージョンは、記事作成時点では「3.7.13」となっています。
■property()関数を用いてプロパティを作成する
では、実際にproperty()関数を用いてプロパティを作成してみます。
■コード
class fruits: def __init__(self): self.__name='' def setname(self,name): #属性の値を設定する関数 print("setname()を呼び出しました") self.__name=name def getname(self): #属性値を取得する関数 print("getname()を呼び出しました") return self.__name name=property(getname, setname) f_object = fruits() f_object.name="みかん" f_object.name
fruits(フルーツ)というクラス(設計図)という定義します。定義後、コンストラクター(Constructor)を定義するために、def文と特別な名前である「__init__()」を記述します。さらに括弧内には、特別な引数,パラメーターであるself(自己)を記述します。記述後、self(自己)に対して、ドット(.)演算子を用いて、__nameという値を「””(空)」の状態にしておきます。
記述後、setnameという属性の値を設定する関数を定義します。属性の値を設定するために括弧内の引数,パラメータには、self(自己)以外にnameを設定し、self(自己)に対して、ドット(.)演算子を用いて、__nameという値をnameと”=(イコール)”にしておき、nameの値がセットされるようにします。その後、getnameという属性値を取得する関数を定義します。その後、今度は属性の値を取得するために、括弧内の引数,パラメータは、self(自己)のみにし、returnとして、self(自己)に対して、ドット(.)演算子を用いて、__nameという値を返すようにします。
定義後、「name=property()」と記述します。property()の括弧内には、今回は第1の引数,パラメータ(fget())としてgetnameを、第2の引数,パラメータ(fset())としてsetnameを渡します。これでプロパティオブジェクトを返し、それをnameに割り当てることができます。
次にf_objectという変数を定義し、その中でfruits()を用いて、オブジェクトを作成するプロセスである「インスタンス化」を行い、作成したオブジェクトに対してドット(.)演算子を用いてnameにアクセスし、今回は「みかん」をnameに割り当てます。これで属性の値が設定されます。
設定後、属性の値を取得するために、作成したオブジェクトに対してドット(.)演算子を用いてnameにアクセスします。
■実行・検証
このセルを保存し、Google Colaboratory上で、セルを実行してみます。
実行してみると、最初に作成したオブジェクトに対してドット(.)演算子を用いてnameにアクセスし、「みかん」という値をセットすると、setname()関数が呼び出され、その後、作成したオブジェクトに対してドット(.)演算子を用いてnameにアクセスすると、今度はgetname()関数が呼び出されることが確認できました。
コメント