Pythonのエントリの基礎(9)__オブジェクト指向プログラミング_2

  • __str__方法

  開発中の場合は、印刷出力オブジェクト変数を使用したい、カスタマイズされたコンテンツを印刷する機能は、あなたは__str__の組み込みメソッドを使用することができます

  注意:__ str__メソッドは文字列を返す必要があります

クラスキャット():
     DEF  __init__ (セルフ、名):
        self.name = 名前
         を印刷' 猫%sの来る'self.name)

    DEF  __str__ (自己):
         戻り値 ' %sの愛の魚'%の自己。名前の

#は、オブジェクトを作成し、パラメータを渡す 
A =キャット(トム印刷(A)

結果:

トムは猫が来た
トムは魚が大好き

 

  • 私有財産---パッケージ

時には我々は、オブジェクトの内部でのみ使用することにしたいと、オブジェクトのプロパティまたはメソッドには、外部からアクセスされないようにします

  定義された方法

あなたは、プロパティ名やメソッド名の前に増加するプロパティやメソッドを定義する際に2つのアンダースコア__、実際には、開発中に、私有財産は、静的ではないので、外部の操作方法を提供することができます私有財産を与えます

  取得カスタムすることで、セット方法は、私有財産へのアクセスを提供します

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

#の私有財産取得するプライベートプロパティのgetメソッドの定義
    DEF getAge(自己):
         戻ります。自己を__ageの

#の民間の定義をこの方法は、再割り当て財産、私有財産のリセット設定
    DEF setAge(セルフ、年齢): 自己__age = 年齢

PERSON1は人=(' トム'、19。 
person1.setAge( 20は印刷(person1.name、person1.getAge ())

結果

トム・20

 

また、宿泊施設には、プライベートラベルの属性へのアクセスを提供しています使用することができます

  • クラスプロパティ、クラスメソッド、静的メソッド

Objectクラスが作成されます。クラスオブジェクト:オブジェクトのクラス名のインスタンスを

クラスはオブジェクトのオブジェクトインスタンスのすべてのクラスによって共有される特性を所有クラスオブジェクトのプロパティであり、唯一のコピーがメモリ内に存在する。パブリックプロパティのクラスについては、クラス外クラスオブジェクトとインスタンスオブジェクトを介してアクセスすることができます

クラスの人(): = トム
    __age。= 19 

P = 人々の
 印刷(p.name) インスタンスオブジェクトの
印刷(people.name) クラスオブジェクト

#のエラーは、クラスプライベートクラス外からアクセスすることができない属性
#の印刷を(P年齢.__) 印刷(人.__年齢)

結果

トム・
トム

クラスの外に変更クラスのプロパティは、一例として、オブジェクトへの参照は、同じ名前のインスタンスプロパティを作成する場合は、その後、変更されたクラスオブジェクトを通過する必要がある場合は、この変形例では、インスタンスの属性を変更され、属性は、クラスには影響しませんあなたが道でプロパティの名前を参照する場合の例のオブジェクトインスタンスは、プロパティは、インスタンスを削除しない限り、インスタンスのプロパティを参照するclass属性をシールド強制的属性

  クラスメソッド

方法変数は、一般的に(他の名前を使用することができる最初のパラメータとして、CLS、最初のパラメータはクラスオブジェクトである必要があり、クラスのメソッドのためのプロセスの種類を識別するために必要、デコレータ@classmethodをクラスオブジェクトを有します最初の引数)としては、一例として、オブジェクトとクラスオブジェクトにアクセスすることが可能です

类方法
クラスの人々 (): = ' ' 

    @classmethod 
    DEF はgetCountry(CLS):
         リターンcls.countryの

P = 人()
 プリント(p.getCountry())
 プリント(people.getCountry())

結果

国の

  staticメソッド

@staticmethodを変更することで修正する必要があり、静的メソッドは、カスタムパラメータを必要としません。

静态方法
クラスの人々 ():
    中国 = ' 中国' 

    @staticmethod 
    DEF はgetCountry():
         返すpeople.China 

P = 人()
 プリント(p.getCountry())
 プリント(people.getCountry())

結果

中国
中国

 

  

おすすめ

転載: www.cnblogs.com/xy-l/p/11220681.html