可視性とアクセスの問題@propertyデコレータ

1、可視性の問題へのアクセス

あなたはプロパティが2つのアンダースコアを始めとして使用する名前で私有財産であるかどうPythonでは、2つだけのプロパティとメソッドにアクセスし、それは、パブリックとプライベートです。次のように:

  「__」と変数名の前に#プライベート変数
  #あなたがプライベート変数を使用する必要がある場合は、その本当の名前を表示するには、dir(クラスを())を使用することができます。
  #プライベート変数/関数は、直接クラス内で呼び出すことができます。
  #の場合あなたは、変数を反映したい/機能は、あなたが使用できることが特に重要です「_」

2、@Propertyデコレータ

      私たちはPythonでプロパティとメソッドへのアクセスの問題を議論する前に、我々は民間に施設にお勧めしませんが、一つのアンダースコアで始まる属性名は、プロパティが直接外部に推奨されていません。この方法で保護されていることを暗示しますアクセスので、あなたは、プロパティのゲッター(アクセサ)を介しプロパティにアクセスし、対応する操作とgetterメソッドとsetterメソッドをラップする@propertyラッパーを使用することを検討することであるセッター(モディファイ)メソッドを実行したい場合。次のように:

  #のデコレータに注意を払う必要があるとき:
     #1デコレータ名を、関数名は一貫している必要があります。
    プロパティのセッターを書き、宣言する必要がある#2、順序を逆にすることはできません
    あなたは少し変数をしたいが、アクセスすることはできません場合は#3を変更された、あなたは@Propertyアクセスするためにデバイスを使用することができ
    ますが、修飾子を構築する、またはアクセス制御を削除することができアクセサ変数を変更したい場合は#4を。

#入力の3つの数字(プライベート)、3つの数字を見つけると数字の2を変更しよう:

ケースI:

  #表示「ウルトラマンのような小さなモンスター」

  #パスワードを入力することにより、内容を変更

-------------------------------------------------- -------------------------------------------------- -

spaceiクラス(オブジェクト):
  DEF __init __(自己):
    自己.__ A = "のようなアルトマンの小さな怪物"
    自己.__美馬= "000000"パスワード#の
  @property#アクセサ- getterメソッド
  DEF A(セルフ):
    印刷( .__セルフ)
  @#A.setter修飾子-セッターメソッド
  DEF A(セルフ、A):
    自己.__ A = A
  DEF MIMA(セルフ):
    印刷( "パスワードを入力してください:")
    RES =入力( "")
    IF解像度==自己.__美馬:の内容場合は解像度に==自己.__美馬平等、同等の変化を決定するためにif文#
      プリント(「!プライバシーの内容を変更し、正しいパスワードを入力してください」)
      A =入力(「」)
      self.a = A
      印刷(セルフ.__ Aは、 "コンテンツが正常に変更された")
    他:
      プリント( "コード入力ミス、再入力してください:")
      self.mima()
  DEF WER(セルフ):
    印刷(「変更または終了したいです?」)
    我々は=入力( "")
    我々は==場合は、 "更改":
      self.mima()
    他:
      合格
スペース=スペースを()
Space.A
Space.wer()

-------------------------------------------------- -------------------------------------------------- -

おすすめ

転載: www.cnblogs.com/honey-2019/p/11322428.html