2日目高度なオブジェクト指向

可視性の問題にアクセス

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

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

        デフ__init __(自己、FOO):
              自己.__ FOO FOO =

        デフ__bar(自己):
              プリント(自己.__ FOO)
              プリント( '__バー')


DEFメイン():
      テスト=テスト( 'こんにちは')
      #1はAttributeError: 'テスト'オブジェクトが'__bar'は属性がありません
      テスト.__バー()
      #1はAttributeErrorを'テスト'オブジェクトは属性'__foo'持たない
      プリント(試験.__ FOO)を


__name__ == "__main__"の場合:
     メイン()

 

@propertyデコレータ

 必要性に注意を払うためにデコレータ:

    1.デコレータ名、関数名は一貫している必要があります。

    2.プロパティには、順序を逆にすることができない、セッターを書き、宣言する必要があります

    3.あなたはほんの少しの変数にアクセスした場合は、変更することはできません、あなたは@propertyをアクセサ使用することができます

    4.修飾子を構築する、またはアクセス制御を削除することができアクセサ変数を変更したい場合。

クラスの人(オブジェクト):

      デフ__init __(自己、名前、年齢):
            self._name =名前
            self._age =年齢

      #アクセサ-のgetterメソッド
     @Property
      DEF名(自己):
           戻りself._name

     #アクセサ-のgetterメソッド
    @Property
    DEF年齢(自己):
          戻りself._age

      #修飾子-セッターメソッド
     の@ age.setter
     DEF年齢(セルフ、年齢):
           self._age =年齢

DEF(自己を)再生:
      IF self._age <= 16:
           印刷( '%Sはチェスの飛行を果たしている。' %のself._name)
      他:
          印刷( '%S doudizhu再生されている' %のself._name)


デフメイン():
      人=人( '王大锤'、12)
      person.play()
      person.age = 22
      person.play()
#person.name = '白元芳' #のはAttributeError:属性を設定することはできません


もし__name__ == '__main__':
     メイン()

 

""
"Python のクラスでは、動的である
" ""
Numクラス(オブジェクト):
       __init __(自己)DEF:
           self.a = 1000

       DEF A(セルフ):
            印刷(self.b、)


NUM = NUM()
num.b = 1000000
#プリント(NUM)
印刷(num.b)
NUM。()

おすすめ

転載: www.cnblogs.com/WANGRUNZE/p/11316510.html