Pythonクラスの継承を説明する多くの記事では、oop、ポリモーフィズム、その他の概念について説明しているため、ある程度の基礎を持った開発者にはあまり役に立たないと思います。さまざまなアプリケーションで直接使用することをお勧めします。 . 特定のコード状況でコードを実行した場合の効果を示すために、特定の状況下で記述されたコード。これは開発者にとってより役立つかもしれません。くだらない話はせずに、コードに直接取り組んでください。
ここでは、古典的なクラスと新しいスタイルのクラスの区別はありません。次の分析は、新しいスタイルのクラスと古典的なクラスの両方に適用されますクラス内の initclass animal(): name="hh" sex="man" def init(self): self.height=10 self.weight=50 def deception(self): print "ansible.height:"+self.height+" animal.weight:"+self.weight def run(self): print "animal is running...."class dog(animal): def init(self): passif name=="main": dg=dog() print dg.dictで実行した結果。今回は {}
dog クラスが次のように変更されたとき (追記: この時点では宣言された init メソッドが表示されていません):
class dog(animal): def run(self): print "dog is running..."この時点では、の init メソッドを直接呼び出しているため、親クラスの動物の場合、結果は次のようになります: {'weight': 50, 'height': 10}
このとき、dog クラスを継承するクラスがあった場合、これはどうなりますか? (Python インタプリタは、最初にサブクラスで init メソッドを検索します。見つからない場合は、見つかるまで親クラスで検索して実行します。今後、Python インタープリタは、親クラスの init メソッドを実行しません。現時点では、親クラスは実行されていません。たとえば、上記の例では、最初の実行時に取得された例には、weight 属性と height 属性がありません。
この時の結果は同じです
クラスの多重継承では、どうなるでしょうか? (多重継承では、クラスの継承パラメータの最初のパラメータで宣言された親クラスの init 関数が実行されます。親クラスに init 関数がない場合は、引き続き親クラスの init 関数を探しますヘッダーが見つかるかどうかに関係なく、init 関数が見つからない場合は、最初のパラメーターで宣言された親クラスに置き換えられます。コードは前の例に基づいて自分でテストできます。
以上がPythonのクラス継承の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。