day16-パッケージ(プライベート静的プロパティ、プライベートプロパティ、プライベートメソッド、クラスメソッド、静的メソッド)

#1 A:
クラスP:
     __ageは = 30の     プライベート静的プロパティ
    DEF  __init__ (セルフ、名): 自己__name__ =名   プライベート属性:フロントダブルと属性名は私有財産を強調しました。

    DEF :(セルフ)get_name
         返し自己を。__name__ 

    DEF  __func(セルフ):  プライベートメソッド
        印刷' プライベートメソッド' 
P = P(' アレックス' #の印刷(P .__名)#エラー、クラスの外ではなく、私有財産を呼び出すために、このメソッドを使用します。
印刷(p._P__name)  アレックス、._ __属性名オブジェクトのクラス名を使用して私有財産にのみ呼び出すことができます。
印刷(p.get_name()) アレックスは、この方法は、私有財産を返すことができます呼び出します。
印刷(p._P__age)  30は、プライベート静的プロパティは、名前__ ._クラスのプロパティ名で呼び出すことが課題です。
印刷(p._P__func()) プライベートメソッド()オブジェクトのクラス名__ ._メソッド名によって呼び出します。

2: プライベートな役割の概念:1つの保護属性は、呼ばれたり変更されたクラスの外にそれをさせないでください。2.サブクラスによって継承されたくありません。親クラスのプライベート静的プロパティ、私有財産、プライベートメソッドは、サブクラスによって継承することはできません。
クラスのゲーム:
     __country = CHINA           プライベート静的プロパティは、
    DEF  __init__(セルフ、名前を):     私有財産 
        。自己__name__ = DEF __aggr(セルフ):            プライベートメソッド
        印刷' 攻撃は100である' クラス息子(ゲーム):合格

S =息子(' アレックス' 印刷(s._Son__country) エラー
を印刷(s._Son__name) エラー
を印刷( s._Son__aggr()) エラー

3:@Property 
#のスーパーマーケットの商品:
クラス品:
     DEF  __init__(セルフ、名前,.価格、add_price、割引): 商品名、購入価格、運賃、割引 
        self.name = 
        セルフ。__price = 。価格
        self.add_price = add_price 
        self.discount = ディスカウント
    @Propertyの    この方法デコレータ変装プロパティ。
    DEF 価格(セルフ):
         リターン(自己。__price + self.add_price)* self.discount 

G =製品(' りんご'、5,3,0.8 印刷(g.price) 6.4、属性を呼び出すのと同じメソッドを呼び出します()括弧を省略します。

第四に、切除調査の私有財産:4.1プライベートプロパティを削除します:オブジェクトが削除された私有財産の後、私有財産のクラスも削除されます。
クラスの製品:
     DEF  __init__(自己、名前,.価格):
        self.name = 名前の
        自己。__price = 価格。
    @Propertyは
    DEF 価格(セルフ):
         リターン。自己__price   #1 。戻り値が等しい自己.__価格価格() 
    @ price.deleter          上下2彼らはここに同じ名前の価格で私有財産を削除することができます前に、メソッド名メソッドがなければなりません。
    DEF 価格(セルフ):
         デル。自己__price   セルフ.__価格等しいapple.price。 
アップル製品=(' りんご'、5。 印刷(apple.price)
 デル apple.price   デリータの上にトリガデルは、その後、私有財産を削除するために価格のメソッドを呼び出します。
印刷(apple.price) 「製品」オブジェクトの属性がNO「_Goods__price」が、オブジェクトの私有財産が削除されている説明しました。
印刷(apple._Goods__price) プライベートプロパティが削除されているように「製品」オブジェクトの属性がNO「_Goods__price」があります。

4.2のプライベートプロパティを変更:変更は、オブジェクトの私有財産が変更され、共有され、私有財産のクラスが変更されます。
クラスの製品:
     DEF  __init__ (セルフ、名前、価格):
        self.name = 名前
        。自己__price = 価格
    @Propertyの
    DEFの価格(セルフ):
         リターン。自己__priceの    #は、価格の値に等しい自己.__価格を返します
    @ price.setter               メソッド名と二つの方法の下では、ここでは、私有財産の価格と同じ名前でのみ変更する必要があります。
    DEF 価格(セルフ、NEW_PRICE):。 自己__price = NEW_PRICE 。自己.__価格等しいapple.price 

アップル(=製品' りんご'。、5 印刷(apple.price) 5 
。apple.price 8 =     #のメソッドを装っ性質、これは、プロパティの変更のように見え、その後、8 NEW_PRICEを渡します。この操作では、個別に割り当てられているのではなく、変更することです。
印刷(apple.price) 8、変更が共有され、プライベートオブジェクトクラスの属性とプライベート属性が8に変更されています。
印刷(apple._Goods__price) 8、クラス8は、私有財産に変更されます。

4.3プライベート静的プロパティを変更:同じ変更を私有財産の原則を変更しますが、インスタンス化オブジェクトを頼りにする必要があります。アップルの割引、変更されたすべての商品の割引が得られ、それは無理がある、変更されています。
クラスの製品:
     __discount = 1つののプライベート静的プロパティ
    @Property
     DEF ディスカウント(セルフ):
         返すグッズ。__discountの  #の製品.__ディスカウントディスカウント= 
    @ discount.setter
     DEF ディスカウント(セルフ、NEW_DISCOUNTを): 製品__discount = NEW_DISCOUNT 製品.__ディスカウント= apple.discount 

アップル = 製品()
 印刷(apple.discount) 1 
apple.discount = 0.8 印刷(apple.discount)
0.8 
印刷(apple._Goods__discount) 0.8、Appleはすべての項目に割引が変更された結果、割引を変更し、それが無理です。

4.4 @classmethodクラスメソッド。ディスカウント商品は、それが合理的である、Appleの割引が変更されると一緒に、変更しました。
クラスの製品:
     __discount = 0.8
     DEF  __init__ (セルフ、名前,.価格):
        self.name = 名前
        。自己__price。=価格。価格は購入価格では、保護された私有財産の使用は、クラスの外に変更されたくありません。
    @Property
     DEF 価格(セルフ):
         リターン。自己__price *製品。__discount  #の価格=購入価格の割引* 
    @classmethod    プライベート静的クラスメソッドは、オブジェクトのインスタンスのリンゴを頼らずに、プロパティを変更することがあります。
    DEFディスカウント(CLS、NEW_DISCOUNT): オブジェクトはCLSなので、オブジェクトが自己であるため、この方法は、私有財産、私有財産の内側にすることはできません。
        CLS。__discount = NEW_DISCOUNT 

アップル =製品(' アップル'、5 印刷(apple.price) 4.0 
Goods.discount(0.7 印刷(apple._Goods__discount) 0.7 
印刷(apple.price) 3.5の

5静的メソッド:オブジェクトとクラスとの@staticmethodは関係ありません、リンゴ()には、自己をブラケットません。
クラスの製品:
    @staticmethod 静的メソッド
    デフアップル():
         印刷' りんご' 
G = 用品()
g.apple() アップル 
Goods.apple() アップル

 

おすすめ

転載: www.cnblogs.com/python-daxiong/p/11229495.html