クラスの高次特性

2433 ワード

類は対象で、哺乳類のようで、属性は遺伝することができて、この点は類の継承です
子は親に相対し、子は親に相対し、子は親のすべての属性を持ち、子は自分の属性値を再定義して親の属性値を上書きすることもできます.
classを定義すると、既存のclassから継承できます.新しいclassはサブクラスと呼ばれ、継承されたclassはベースクラス、親クラスと呼ばれます.
次のコードの例を示します.
class a():
    def run(self):
        print('a class...')
class b(a):
    def run(self):
        print('b class...')
class c(a):
    def hello(self):
        print('hello c')
  • まずaクラスを定義し、run()メソッド
  • が含まれています.
  • 次にbクラスを定義し、aクラスと継承し、aクラスと同じ方法runが含まれ、aのrunメソッド
  • を上書きする.
  • はcクラスを再定義し、同様にaクラスを継承するがrunメソッドを書き換えるのではなく、新しいメソッドhello
  • を再定義する.
    次にクラスの値を初期化し、関数名を使用して状況を見てみましょう.
    ac = a()
    bc = b()
    cc = c()
    ac.run()
    #  :a class...
    bc.run()
    #  :b class...
    cc.run()
    #  :a class...
    cc.hello()
    #  :hello c
    

    以上の結果から、以下の結論が得られる.
  • ac印刷はa class...であり、まさにaクラスで定義された出力
  • である.
  • bc印刷はb class...であり、bのrunを再定義し、親クラスのrunメソッド
  • を上書きすることを示す.
  • cc印刷はa class...で、cはrunを定義していません.そのrun方法は親aから継承され、自分でhello方法
  • を定義しました.
    継承:子クラス継承された親から、親のすべての属性とメソッドを取得します.
    次にクラスの特性であるマルチステート
    多態、意味は多種の形態で、ここは動物で作るのが最も適当です
    まず、動物の親を定義します.
    class Animal():
        def get_type(self):
            print("Animal...")
    

    次にサルを定義し、動物を継承します.
    class Monkey(Animal):
        def get_type(self):
            print("Monkey...")
    

    マウスを定義し、動物を継承します.
    class Mouse(Animal):
        def get_type(self):
            print("Mouse...")
    

    次に人間を定義し、サルを継承します.
    class People(Monkey):
        def get_type(self):
            print("People...")
    

    3つのクラスを定義してから、動物クラスに適用する関数を定義します.
    def get_animal(animal):
        animal.get_type()
    

    get_animal関数は、動物クラスのオブジェクトパラメータを受信し、get_を実行します.type()メソッド
    最後に定義したすべてのクラスをインスタンス化し、get_を呼び出します.animal関数を見てみましょう
    animal = Animal()
    monkey = Monkey()
    mouse = Mouse()
    people = People()
    get_animal(animal)
    #  :Animal...
    get_animal(monkey)
    #  :Monkey...
    get_animal(mouse)
    #  :Mouse...
    get_animal(people)
    #  :People...
    

    以上のコードは検出クラスのマルチステートである.同じ親に基づいているので、親の方法があるに違いありませんが、この場合、親や同じ種類ではなく、さまざまな形態のクラスになります.
    これは類の多態性である.
    小さい白が必ず聞く小さな質問:クラスを定義して、括弧の中には空があって、親が入っています.各クラスがobjectクラスを継承しているのを覚えていますが、なぜ空を書くことができるのでしょうか.
    答え:python 3はobjectを暗黙的に継承しているので、python 3では継承objectを書くか書かないかは区別がありません.【ただしPython 2.xでは違いがあります】
    Python 3チュートリアル--転送ドア