Pythonのクラスの学習経験

 

クラスノート

1)の命名規則
、、Pythonの変数名に似た__xxx__、また、二重下線と二重下線で始まり、そして終わることに注意してください
特殊変数、直接アクセスすることができる特別な変数ではなく、プライベート変数なので、使用__nameすることはできません__、__変数名などscore__。
 
時には、あなたは変数名の例としては、_nameとして、アンダースコアで始まるように表示されます、このインスタンス変数は、外部からアクセス可能です
しかし、条約の規定に従い、あなたは、私がアクセスすることができますが」、つまり、この変数を参照する場合、
しかし、アクセスの自由ではない、プライベート変数として私を扱ってください。」
 
インスタンス変数は、必ずしも外部からアクセスされていないされていない2つのアンダースコアで始まりますか?実際には、ありません。
できません直接アクセス__nameため_Student__nameに__name変数外のPythonインタプリタ、それゆえ、
することができますまだアクセス__name変数_Student__name:
 
>>> bart._Student__name
「バートシンプソン」
Pythonインタプリタの異なるバージョンが異なる変数名に__nameを出してもよいので、しかし、強く、あなたがそれをしないことをお勧めします。
 
全体的には、Pythonは、意識的にすべてのおかげで悪いことをやってからあなたを停止する任意のメカニズムを持っていません。
2)連続の法則
サブクラス継承初期の親クラスのinitメソッドのすべてのプロパティとメソッド、プロパティを初期化しなければならないので
 

Pythonの継承

1)サブクラスは親クラスを継承しています
    クラスを記述する場合は、必ずブランクから起動しません。あなたは別のクラスを書きたい場合は既製のバージョンの特別な種類である、あなたは、継承を使用することができます。別のクラスからクラスの継承は、自動的にすべてのプロパティと別のクラスのメソッドを取得する場合、既存のクラスは親クラスと呼ばれ、新しいクラスをサブクラスと呼ばれています。サブクラスは、親クラスのすべての属性とメソッドを継承するだけでなく、独自のプロパティとメソッドを定義することができます。
2)initメソッドサブクラス
    あなたは、サブクラスのインスタンスを作成すると、タスクを完了するためのPythonの最初の必要性は、親クラスの割り当てのすべての属性を与えることです。このため、メソッドのサブクラスの__init __()のヘルプに親を必要とします。
クラスカー():
「」「単純にモック車を試してみてください。」「」
    デフ__init __(自己、メーカー、モデル、年):
        self.make =メイク
        self.model =モデル
        self.year =年
        self.odometer_reading = 0
 
    デフ(自己)get_descriptive_name:
        LONG_NAME = STR(self.year)+ '' + self.make + '' + self.model
        リターンlong_name.title()
 
    デフread_odometer(自己):
        印刷(+ STR(self.odometer_reading)+ "この車は持っている" "その上にマイルを。")
 
    デフ(自己、走行距離)update_odometer:
        走行距離> = self.odometer_readingの場合:
            self.odometer_reading =走行距離
        他:
            印刷(「あなたは走行距離計をロールバックすることはできません!」)
 
    デフincrement_odometer(自己、マイル):
        self.odometer_reading + =マイル
 
クラスElectricCar(車):
「」「電気自動車がユニークです。」「」
    デフ__init __(自己、メーカー、モデル、年):
「」「親クラス属性を初期化します。」「」
        スーパー().__のinit __(メーカー、モデル、年)
 
my_tesla = ElectricCar( 'テスラ'、 'モデルS'、2016)
印刷(my_tesla.get_descriptive_name())

 

3)python2継承
 
サブクラス定義属性およびメソッドへ4)
だから、別のクラスからクラスを継承した後、新しいプロパティとメソッドは、クラスと地区親分子のために必要なことを追加することができます。特定のプロパティ(バッテリ)以下、電気自動車、及び属性に記載の方法を追加します。私たちは、電気を保存します
ボトルの容量、および印刷バッテリーに記載の調製方法。
クラスカー():
    デフ__init __(自己、メーカー、モデル、年):
        self.make =メイク
        self.model =モデル
        self.year =年
        self.odometer_reading = 0
    - スニップ - 

クラスElectricCar(車):
    「」「電気自動車に、特定の車の側面を表します。」「」
    デフ__init __(自己、メーカー、モデル、年):
        「」」
        ユニークな電気自動車
        親クラスのプロパティを初期化し、その後、電気自動車への特定の属性を初期化
        「」」
        スーパー().__のinit __(メーカー、モデル、年)
        self.battery_size = 70#1处
 
    デフdescribe_battery(自己):#2处
        「」「」「バッテリー容量を説明したメッセージを表示します」
        印刷(+ STR(self.battery_size)+ "この車は持っている" "-kWhバッテリーを。")

 

サブクラスは親クラスを継承する場合、必要性は、あなたが親クラスのinitメソッドを呼び出す必要があり、親クラスのプロパティやメソッドを使用するには
 
クラスThread:
    「」」
    XX1、XX2
    「」」
     デフ__init __(自己、XX1、XX2):
            self.xx1 = XX1
            self.xx2 = XX2
 

クラスMyThread(スレッド):
    デフ__init __(自己、XX1、XX2):
        スーパー().__のinit __(XX1、XX2)#スーパーと同等です(MyThread、自己).__のinit __()
        self.xx3 = "新しいプロパティ3" 
        self.xx4 = "新しいプロパティ4" 
 

 

5)メソッドは、親クラスをオーバーライド
親クラスのメソッドについては、限り、それはシミュレーションのサブクラスの物理的挙動を満たしていないとして、それは書き換えることができます。この目的のために、方法は、サブクラス、すなわち、同じ名前およびオーバーライドする親クラスメソッドで定義されてもよいです。このように、Pythonは親クラスのパーティーを考慮しています
唯一の法律が、あなたはサブクラスで定義することを適切な方法に焦点を当てています。
仮定Carクラスはメソッドと呼ばれるfill_gas_tankを持っている()、そのすべて電気自動車の無意味、あなたがそれを書き換えすることもできますので。以下は、書き換えする1つの方法を示しています。
クラスElectricCar(車):
    - スニップ - 
    デフfill_gas_tank():
        「」「電気自動車はタンクではありません。」「」
        印刷(「この車はガソリンタンクを必要としません!」)

 

例IIのサブクラスは、すべての主要な継承は、親クラスの特性を達成する必要があります

 
クラスの父:
    デフ__init __(自己、名前、年齢、性別):
        self.name =名前
        self.age =年齢
        self.sex =セックス

    デフ(自己)と言います:
        印刷(%(self.name、self.age、self.sex) "私の父は話すだろう、私は私の年齢は%dです、%sのと呼ばれる、私のセックスは、%sのです")


クラスの子(父):
    デフ__init __(自己、名前、年齢、性別、学年、遊び):
        スーパー().__のinit __(名前、年齢、性別)
        self.grade =グレード
        self.play =遊び

    デフ(自己)と言います:
        印刷(%(self.name、self.age、自己 "子供は話すだろうが、私の名前は私が%sのを読んで、私のセックスは%sと、私の年齢は%dです、%sのですが、私は%sのを再生します"。性別、
                                                              self.grade、self.play))

 

例IIIサブクラスはステルス親クラスのプロパティを継承することができます
クラスの父:
    デフ__init __(自己、名前= ''、年齢= 0、性別= ''):
        self.name =名前
        self.age =年齢
        self.sex =セックス

    デフ(自己)と言います:
        印刷(%(self.name、self.age、self.sex) "私の父は話すだろう、私は私の年齢は%dです、%sのと呼ばれる、私のセックスは、%sのです")


クラスの子(父):
    デフ__init __(自己、グレード、遊び):
        スーパー().__のinit __()
        self.grade =グレード
        self.play =遊び

    デフ(自己)と言います:
        印刷(%(self.name、self.age、自己 "子供は話すだろうが、私の名前は私が%sのを読んで、私のセックスは%sと、私の年齢は%dです、%sのですが、私は%sのを再生します"。性別、
                                                              self.grade、self.play))
__name__ == '__main__' の場合:
    C =チャイルド(「2年」、「プレイゲーム」)
    C.say()

「」」
子供は、私の名前を話すだろう、私の年齢は0、私の性別、2年目ですが、私は遊びのゲームをプレイします
「」」
 

 

例4:
 
クラスの父:
    デフ__init __(自己、名前= ''、年齢= 0、性別= ''):
        self.name =名前
        self.age =年齢
        self.sex =セックス

    デフ(自己)と言います:
        印刷(%(self.name、self.age、self.sex) "私の父は話すだろう、私は私の年齢は%dです、%sのと呼ばれる、私のセックスは、%sのです")


クラスの子(父):
    デフ__init __(自己、グレード、遊び):
        スーパー().__のinit __()
        self.grade =グレード
        self.play =遊び

    デフ(自己)と言います:
        印刷(%(self.name、self.age、自己 "子供は話すだろうが、私の名前は私が%sのを読んで、私のセックスは%sと、私の年齢は%dです、%sのですが、私は%sのを再生します"。性別、
                                                              self.grade、self.play))


__name__ == '__main__' の場合:
    C =チャイルド(「2年」、「プレイゲーム」)
    C.name = '小明'
    C.age = 12
    C.sex = '少年
    C.say()
#子供が話すだろう、私は私のセックスは、私の二年目の少年で、私は遊びのゲームをプレイするだろう、私の年齢は12で、リトル明と呼ばれます

  

おすすめ

転載: www.cnblogs.com/dadaizi/p/11964741.html