この記事は主に Python の継承問題の詳細な分析に関する関連情報を紹介しています。興味のある方はぜひ一緒に見てください:
class p1: def __init__(self,a,b): print("init in p1") self.a1=a self.b1=b self.f1() def f1(self): print("f1 in p1") class c1(p1): def __init__(self,a,b,c=2): print("init in c1") p1.__init__(self,a,b) self.c1=c self.f1() def f1(self): print("f1 in p2") class c2(c1): pass c=c2(11,22) print(c.a1) print(c.b1) print(c.c1)
コードの結果は次のとおりです。
F:\python_code\test>python class_init.py init in c1 init in p1 f1 in p2 f1 in p2 11 22 2
コードの実行プロセスに関して、次の質問があります。c1 の __init__ 関数で p1.__init__() を呼び出し、c1 を実行します。毎回 f1() 関数 p1.f1() を実行する関数はありません。p1 で実行される f1() も c1.f1() です。なぜ?
原因分析: このコード行のp1.__init__(self,a,b)
self は c1 のオブジェクトです。したがって、p1 に渡される self も c1 になります。
上記の内容は、コードを通して Python の継承の問題を紹介しています。お役に立てば幸いです。
Python の継承問題の簡単な分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。