Pythonクラスのプロパティデコレータを理解する

UnsplashのRalph(Ravi)Kaydenによる写真

前書き

オブジェクト指向プログラミングでは、クラスの各属性に3つの基本的なメソッドがあります。

  1. その値を取得するためのgetterメソッド
  2. その値を設定するためのセッターメソッド
  3. それを削除するための削除メソッド

しかし、人生は上記の例ほど簡単ではありません。Yang._score = -10またはのような間違った入力をどのように処理できYang._score = 99999ますか?

self._score入力値をチェックするためのセッター関数を作成することをお勧めします。

見た目は良いですが、無効な値を直接設定することはできます。

このset_score() 関数を使用すると、値の有効性が検証されます。ただし、使用を忘れて直接値を設定すると、検証が保証されません。

したがって、の値self._scoreが常に有効であることを完全に保証することはできません。メソッドによる値の設定は、直接設定するほど便利ではないことは言うまでもありません。これは、プロパティデコレータが救助に来るところです。

UnsplashのSebMoozeによる写真

プロパティデコレータの使用方法は?

次のようにStudentクラスを変更してみましょう。

上記のコードが示すように、@propertyデコレータを使用した後、値を直接設定し、その有効性を確認することができます。プロパティデコレータは、Pythonクラスで非常に便利で広く使用されているメカニズムです。これは、属性によって直接getter、setter、およびdeleterメソッドを呼び出すのに役立ちます。

プロパティデコレータを使用するための一般的なテンプレートは次のとおりです。

注:getter、setter、およびdeleterメソッドの名前は同じである必要があります。最良の選択は、属性の名前を使用することです。

プロパティデコレータを使用する別の方法

このプロパティは、Pythonの組み込みデコレータにすぎません。したがって、他のデコレータと同様に、別の方法で使用できます。

このproperty(fget=None,fset=None,fdel=None,doc=None)関数には4つのパラメーターがあります。

  • fget() —属性値を取得するために使用されます
  • fset() —属性値を設定するために使用されます
  • fdel() —属性値を削除するために使用されます
  • doc() —属性のドキュメント(docstring)を含む文字列

すでに知っているように、プロパティデコレータで定義できるメソッドは3つ(getter、setter、deleter)です。3つの方法のいずれかが定義されていない場合、この方法を使用することはできません。したがって、プロパティデコレータを巧みに使用して、読み取り専用属性を定義できます。例えば:

示される上記の例のように、我々は、セッターメソッドが定義されていないscoreので、score設定することができません。つまり、これは読み取り専用の属性です。これは、プロパティデコレータの重要な使用シナリオです。

結論

プロパティデコレータは強力なツールであり、Pythonクラスで広く使用されています。これにより、パラメーターの必要なチェックを確実にしながら簡潔なコードを記述できるため、エラーの可能性が減少します。

読んでくれてありがとう。その他のPythonチュートリアル:

究極のPythonチュートリアル(更新を続ける)

提案された投稿

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

Langchain を使用して ChatGPT プラグインを無料で実行する方法

Langchain を使用して ChatGPT プラグインを無料で実行する方法

ブラウザ、コード インタープリターなどの新しい強力な ChatGPT プラグインについては聞いたことがあるはずです。しかし、問題があります。プラグインへのアクセスは待機リストに制限されているため、多くの人がアクセスできません。

関連記事

一部のフリーランサーが自分の人生を偽っている理由

一部のフリーランサーが自分の人生を偽っている理由

私は最近、世界最大のプロフェッショナルなソーシャル ネットワークである Linkedin を利用していて、フォローしているフリーランス デザイナーの注目を集めた投稿を見つけました。彼らはすべて、飛行機からの写真、ラップトップを持ってビーチで撮影した写真、スイミング プールやオフィスから素晴らしい景色を眺めた写真を投稿していました。

24 年度に炭素除去に資金を提供

経路全体にわたる Carbon180 の割り当てリクエストの内訳

24 年度に炭素除去に資金を提供

アリソン・リー著、マネージング政府問題顧問 連邦政府の年次歳出プロセスは、二酸化炭素除去 (CDR) に資金を提供する取り組みの中心です。毎年、Carbon180 は、来年の資金がどこに流れるかの指針となるよう、さまざまな議会事務所に要望書を提出しています。

代名詞は超怖い

頻繁に起こることだが、突然、私は衝撃を受ける 再びミッドウェイだ <いいえ、太平洋にあるものではなく、カーニバルにあるものです> どの見出しも大音量で…..

緩やかな浸食: 人々がキャリアを無駄に浪費する方法を明らかにする

緩やかな浸食: 人々がキャリアを無駄に浪費する方法を明らかにする

今日のペースが速く競争の激しい世界では、個人の成長、経済的安定、そして人生全体の満足度において、個人のキャリアが重要な役割を果たしています。しかし、多くの人は停滞と不満の絶え間ないサイクルに陥っており、職業生活が徐々に消耗していきます。