Pythonのproperty()関数を用いてクラスでプロパティを定義する

スポンサーリンク

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()関数が呼び出されることが確認できました。

コメント

タイトルとURLをコピーしました