Python の継承問題の簡単な分析

高洛峰
高洛峰オリジナル
2017-03-02 16:01:281379ブラウズ

この記事は主に 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 サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。