Pythonと、オブジェクトのプライベート属性のためのプライベートメソッド

01.シナリオと方法を定義

シナリオ

  • 実際の開発では、オブジェクト  の  プロパティやメソッドの一部は、  唯一にしたいことがあり  、オブジェクトの内部で使用されている間、  に、外部からアクセスされることを望むものではありません
  • プライベートプロパティ  である  オブジェクト  公開したくない  プロパティを
  • プライベートメソッドは、  ある  オブジェクト  を開示したくない  方法を

定義された方法

  • で  プロパティやメソッドの定義、  以前のプロパティ名やメソッド名  高めるために  2つのアンダースコアを、の定義である  プライベート  プロパティまたはメソッド

  

クラス:女性

    DEF  __init__ (セルフ、名):
        self.name = 名前の
         #は、女性の年齢聞かないでください 
        。自己を__age = 18 DEF __secret (セルフ):
         印刷" 私の年齢がD%である"。%の自己__age 
A =女性(アリス印刷(A) #私有財産、直接外部アクセスすることはできません
#1 A .__年齢プライベートメソッドを、直接外部アクセスすることはできません
。#.__ Aの秘密を()

     





02.擬似プライベート属性とプライベート(科学)の方法

ヒント:毎日の開発では、この方法を使用していない私有財産やプライベートメソッドのオブジェクトへのアクセスを

Python 、何もありません  本当の意味  の  プライベート

  • 与える  プロパティメソッドの  命名は、実際のある  名前  、外の世界がアクセス権を持つことができないように、いくつかの特別な処理を行うには
  • 治療:内  の名前  の前に  _类名 => _类名__名称
印刷(a._Women__age)    私有財産が直接外部にアクセスすることはできません
印刷(a._Women__secret())   プライベートメソッドが直接外部アクセスすることはできません

 03.get機能と設定機能

解決私有財産の問題への外部アクセス

機能定義関数を取得し、設定する機能、および吻合のためのパッケージングコンセプト、およびgetXXXメソッドのsetXXX命名

機能を得る:値を取得します

設定機能:[値によって割り当て]の値を設定します

説明:基本的に通常のメンバ関数、一般的な関数が値を返す取得、設定パラメータの設定

クラス:女性

    DEF  __init__ (セルフ、名):
        self.name = 名前の
         #は聞かないでください、女性の年齢 
        セルフ。__age = 18 DEF setAge(自己): 自己__age = 18 DEF getAge(セルフ):
         リターン。自己__ageのDEFの__secret (自己):
         印刷" 私の年齢のDの%"。自己%の__age 
A =女性(' アリス' を印刷(a.getAge()) ""「18です

    

    

     

プロパティデコレータ@ 04

デコレータ:動的関数に機能を追加、クラスのメンバーのための方法は、デコレータを使用することができます

@propertyデコレータは:変数の使用として機能します

取得および設定機能を簡素化

使用:機能に作用する@propertyデコレータ、取得するには、対応する機能を

同時に、それは割り当てのために設定されている機能と同等の新しいデコレータ@属性名.setterを、生成されます。

注:@property装飾部材は、クラス内のメソッドは、パラメータことを保証するために確認しながら、簡略化されたコードで使用することができます

クラスパーソン:
     DEF  __init__ (セルフ、名前、年齢):
        セルフ。__name__ = 名前
        セルフ。__age = 年齢の

    #1 注:ネーミング機能は、機能を取得し、
    という名前の関数は、固定されていない限り、有効な識別子として、することができ
    通常の状況、区別しやすいという名前の変数名の使用の下で、しかし
    @propertyの
     DEFの名前(自己):
         リターン。自己__name__ 

    #1 注:ネーミング機能:役割と機能名@property一貫した
    #のデコレータ命名:.setter @属性名
    同等の機能が設定されているプロパティの民営化に割り当てられ、パラメータを設定し、
    @のname.setter
     DEFの:名前(自己、名前)
        。自己__name__ =名前

    @property 
    デフ年齢(自己):
          返す自己を。__age 

    @ age.setter 
    デフ年齢(自己、年齢):
         もし年齢< 0:
            年齢 = 0 
        の自己。__age = 年齢
P1 =人(" ジャック"、15 印刷(p1.name)     >>ジャック 
p1.name = ' トム' 
プリント(p1.name)     >>トム

 

おすすめ

転載: www.cnblogs.com/huiyichanmian/p/11286339.html